Kami melihat jenis tunggu PAGELATCH_EX dan PAGELATCH_SH yang sangat tinggi bersama dengan menunggu WRITELOG yang tinggi. Saya telah mendiagnosis kueri yang menyebabkan PAGELATCH menunggu dan dapat menghilangkannya dengan mengurangi laju penyisipan ke dalam kunci primer yang sibuk yang dikelompokkan yang ditentukan dengan nilai IDENTITAS. Saya mengerti bahwa fenomena ini dikenal sebagai pertanda latch insert halaman terakhir.
Namun pertanyaan saya adalah ketika catatan baru dimasukkan, apakah SQL Server mengambil PAGELATCH_EX eksklusif pada halaman penyangga, menyisipkan catatan ke halaman penyangga, menulis catatan ke log transaksi dan kemudian merilis PAGELATCH_EX eksklusif sebagai rincian https: // www.microsoft.com/en-ie/download/details.aspx?id=26665 Halaman 24. Atau apakah itu menulis catatan ke log transaksi terlebih dahulu sebelum mengambil PAGELATCH_EX sebagai terperinci "Menyelesaikan PAGELATCH Contention pada Sangat Serempak" INSERT Workloads - Informasi latar belakang Panduan SQLCAT untuk: Mesin Relasional
Jika catatan ditulis untuk log di luar mekanisme latching maka saya dapat mengesampingkan penulisan lambat ke disk sebagai penyebab menunggu PAGELATCH tinggi. Tetapi jika kait dipegang sampai catatan mengeras untuk login maka saya mungkin harus mempertimbangkan WRITELOG.
Juga akan memiliki beberapa indeks non-clustered menyebabkan PAGELATCH_ * latch ditahan lebih lama yaitu jika tabel memiliki indeks clustered dan beberapa non clustered adalah kait ditambahkan dan dirilis ke masing-masing halaman buffer indeks secara bersamaan?
Pembaruan 1 Setelah membaca slide confio-sql-server-writelog-tunggu dua dan arsitektur WAL umum. Saya sekarang memahami bahwa langkah "Rekam entri log yang barisnya telah dimodifikasi" yang diuraikan dalam kedua kertas putih mengacu pada SQL Server logging perubahan dalam cache log transaksi, bukan disk. Setelah transaksi selesai atau buffer penuh semua catatan segera dibilas ke disk.