Gejala
Ketika terlalu banyak sisipan serentak terjadi dalam wadah hash yang sama, atau ad hoc SQL Server plan cache mencapai batas entri 160.036, kontensi parah pada spinlock SOS_CACHESTORE terjadi. Dalam situasi ini, penggunaan CPU yang tinggi terjadi di Microsoft SQL Server.
Penyebab
Masalah ini terjadi ketika cache paket SQL Server mencapai batas entrinya, dan paket yang memiliki biaya rendah harus diusir untuk menyisipkan paket baru. Hal ini menyebabkan kontensi berat bagi SOS_CACHESTORE spinlock yang menyediakan sinkronisasi untuk wadah tabel hash cache paket SQL Server.Â
Resolusi
Informasi Pembaruan Kumulatif
Masalah ini pertama kali diperbaiki dalam pembaruan kumulatif SQL Server berikut.
Setiap pembaruan kumulatif baru untuk SQL Server berisi semua hotfix dan semua perbaikan keamanan yang disertakan dengan pembaruan kumulatif sebelumnya. Lihat pembaruan kumulatif terbaru untuk SQL Server:
Informasi Selengkapnya
Cache paket memiliki dua batasan: Ukuran total dan jumlah total semua paket. Batasan jumlah entri dan ukuran dijelaskan dalam laporan resmi berikut:
Jumlah maksimum entri yang dapat ditahan oleh cache rencana adalah empat kali jumlah bucket. Anda bisa memverifikasi informasi ini dengan menjalankan kueri berikut ini:
select name, type, buckets_count
from sys.dm_os_memory_cache_hash_tables
where name IN ( 'SQL Plans' , 'Object Plans' , 'Bound Trees' )
select name, type, pages_kb, entries_count
from sys.dm_os_memory_cache_counters
where name IN ( 'SQL Plans' , 'Object Plans' , 'Bound Trees' )
Misalnya, pada sistem 64-bit, jumlah wadah untuk cache paket SQL Server adalah 40.009. Oleh karena itu, jumlah maksimum entri yang bisa pas di dalam singgahan paket SQL Server adalah 160.036.
Jika Anda memiliki beban kerja yang menggunakan kueri ad hoc yang berbeda, batas ini dapat menjadi hambatan. Perubahan yang dibuat oleh hotfix ini membahas situasi ini. Setelah Anda menginstal hotfix ini dan mengaktifkan perubahan menggunakan bendera jejak startup "-T 174," jumlah bucket ditingkatkan menjadi 160.001 pada sistem 64-bit. Cache rencana kemudian dapat menampung maksimal 640.004 paket.
Status
Microsoft telah mengonfirmasi bahwa ini adalah masalah pada produk Microsoft yang tercantum di bagian "Berlaku untuk".