Pemblokiran objek urutan

Aug 19 2020

Kami mengalami masalah dengan objek urutan yang kami miliki yang disebut banyak. Ini digunakan untuk menetapkan nilai sebelum catatan dimasukkan ke dalam tabel.

Hari ini saya melihat bahwa 700+ sesi (semua mencoba untuk mendapatkan nilai berikutnya dari objek urutan) diblokir oleh sesi yang mencoba mendapatkan nilai berikutnya dari objek urutan dengan tipe tunggu PAGELATCH_EX. 700+ sesi lainnya menunggu pada LATCH_EX.

Ketika saya melihat ke resource tunggu, yang dimaksud adalah sys.sysobjvalues.

Saya penasaran mengapa ini bisa terjadi dan apakah orang lain telah melihat ini. Kami baru-baru ini mengubah nilai CACHE untuk urutan ini dari DEFAULT (50) menjadi 200. Saya berasumsi ini akan meningkatkan kinerja pemanggilan urutan mengingat kami menggunakannya begitu berat tetapi mungkin saya salah.

Kami menggunakan SQL Server 2012 SP4.

Jawaban

LowlyDBA-JohnMcCall Aug 28 2020 at 20:58

700+ sesi lainnya menunggu di LATCH_EX .... Kami baru-baru ini mengubah nilai CACHE untuk urutan ini dari DEFAULT (50) menjadi 200.

Jika Anda memiliki 700 sesi tunggu, pikiran pertama saya adalah cache harus jauh lebih tinggi mengingat beban kerjanya. Saya akan merekomendasikan untuk mencoba sesuatu dalam kisaran 500-1000 (dan mungkin terus meningkat) sampai Anda melihat penantian stabil atau menurun. Harus ada sweet spot yang dapat Anda temukan dengan nilai cache yang lebih besar.