Gejala
Pertimbangkan skenario berikut:
- Anda memiliki tabel yang memiliki indeks penyimpan kolom berkluster di dalamnya, dan tabel memiliki banyak kolom (dalam ratusan).
- Data (tipe data) dari kolom ini adalah data yang sangat dapat dikompresi seperti varchar.
- Anda menjalankan pernyataan SELECT terhadap tabel ini untuk memilih subset besar atau semua kolom dari tabel ini.
- Pernyataan select Anda memiliki klausa WHERE yang membatasi outputnya menjadi beberapa baris (kueri sangat selektif).
Dalam skenario ini, Anda mungkin mengalami salah satu atau semua gejala berikut:
- Beban kerja bersamaan, (kueri lain yang dijalankan bersamaan di server dengan kueri ini), dapat mengalami penurunan performa dan hilangnya throughput.
- Anda mungkin melihat penggunaan CPU tinggi yang terputus-putus.
- Jika Anda mengkueri sys.dm_os_ring_buffers dan menampilkan entri tipe SchedulerMonitor, Anda akan menemukan pesan "penjadwal yang tidak menghasilkan" terputus-putus yang dicatat selama waktu eksekusi kueri ini.
- Anda mungkin menerima kesalahan penjadwal yang tidak menghasilkan di log kesalahan dan file pembuangan memori gejala mungkin dibuat.
Resolusi
Masalah pertama kali diperbaiki dalam pembaruan kumulatif SQL Server berikut:
Rekomendasi: Menginstal pembaruan kumulatif terbaru untuk SQL Server
Setiap pembaruan kumulatif baru untuk SQL Server berisi semua hotfix dan semua perbaikan keamanan yang disertakan dengan pembaruan kumulatif sebelumnya. Kami menyarankan Anda mengunduh dan menginstal pembaruan kumulatif terbaru untuk SQL Server:
Informasi Selengkapnya
Perbaiki detailPekerja yang memproses segmen kolom (membatalkan kompresinya dan memindainya untuk mencari baris yang memenuhi syarat) digunakan untuk "menghasilkan" penggunaan CPU ke pekerja lain/eksekusi kueri bersamaan ketika jumlah baris ambang batas tertentu dikeluarkan. Ketika klausa WHERE sangat selektif untuk menghasilkan beberapa baris, pekerja yang memproses kueri ini memproses segmen yang tidak terkompresi dan dalam jumlah besar (karena sangat sedikit baris yang memenuhi syarat) sebelum mereka menyerahkan CPU secara kooperatif agar pekerja lain dapat memproses beban kerja mereka. Hal ini menyebabkan penggunaan CPU yang tidak teratur dan penurunan throughput untuk beban kerja bersamaan. Perbaikan ini mengoptimalkan dan meningkatkan algoritma berbagi CPU untuk kueri penyimpan kolom tersebut.
Referensi
Pelajari tentang terminologi yang digunakan Microsoft untuk menjelaskan pembaruan perangkat lunak.