Saya telah berdebat dengan DBA dan beberapa orang tentang masalah kinerja pada server SQL kami. Biasanya semuanya baik-baik saja, namun selama beberapa minggu terakhir kami telah mengalami lonjakan lag besar di server sql. Jelas bahwa SQL Server menunggu pada disk I / O. Tapi saya terus diberitahu bahwa itu karena SQL Server meminta I / O tinggi yang tidak normal. Yang tidak demikian. Saya bisa melihat dari apa yang berjalan bahwa tidak ada yang di luar normal, dan semua DBA peduli untuk melihat adalah apa yang menyebabkan pemblokiran dan sebagainya, yang tidak berguna. Sebagai contoh, hal utama yang kami lihat cadangannya adalah operasi pada basis data ASPState, yang kami gunakan untuk mengelola ASP Session State di server web. Operasi ini biasanya tidak pernah terlihat pada hasil aktif Sp_who2 karena mereka terjadi begitu cepat. Basis data dalam mode pemulihan sederhana dan pencatatan adalah miminal. Namun selama lonjakan lag ini kita bisa melihat banyak pilih dan memperbarui operasi pada database yang diblokir atau menunggu. Saya yakin apa yang terjadi adalah bahwa seseorang atau beberapa pekerjaan sedang menjalankan sesuatu yang menyebabkan penggunaan disk heavey pada array raid yang digunakan untuk basis data log dan file data. Masalahnya adalah membuktikannya, karena tidak ada yang mau mengakui bahwa mereka melakukan sesuatu yang mematikan situs web kami.
Pertanyaan saya adalah apa penghitung kinerja atau apa pun yang bisa saya login yang akan membantu menunjukkan bahwa server SQL menunggu di I / O, tetapi bukan karena meminta lebih dari biasanya, bukan karena disk sibuk untuk menanggapi permintaan dari sql server secepat biasanya?
sumber
Jawaban:
Lihatlah penghitung perfmon berikut:
Page lookups/sec
Page reads/sec
Readahead pages/sec
Full Scans/sec
Range Scans/sec
Skipped Ghosted Records/sec
Page IO latch waits
SQL Server yang menggerakkan sejumlah besar permintaan IO akan dikuatkan dengan pemindaian angka yang tinggi, peningkatan dalam pencarian halaman dan pembacaan halaman serta menunggu latch IO halaman yang tinggi. Layak untuk dicoba melihat
sys.dm_exec_query_stats
entri dengan jumlah pembacaan fisik yang tinggi. Mereka bisa dengan cepat menunjukkan pelakunya.Secara umum mendekati masalah sebagai masalah pemecahan masalah kinerja, mengikuti metodologi seperti Waits dan Antrian adalah pendekatan yang tepat. Anda DBA tampaknya melakukan hal yang benar sehingga Anda harus mendengarkannya.
sumber
IO Data Bytes/sec
dan melihat apakah beberapa proses lain adalah menghancurkan disk.Untuk mulai menggunakan pertanyaan Diagnostik Glenn Berry dan SP_Whoisactive Adam Machanic untuk mencari tahu apa yang sebenarnya terjadi.
Pertama-tama lihat file database mana yang paling banyak mengalami hambatan IO dengan menjalankan kueri ini (Query by Glenn Berry)
Kemudian jalankan kueri ini untuk melihat sepuluh peristiwa teratas yang ditunggu server Anda (permintaan oleh Jonathan Kehayias ). Anda juga akan menemukan permintaan serupa dari permintaan diagnostik Glenn Berry.
Setelah Anda memiliki informasi ini, akan lebih mudah untuk memecahkan masalah.
BTW Anda dapat menemukan banyak posting tentang cara menggunakan sp_whoisactive untuk pemecahan masalah di sini.
sumber
"Masalahnya membuktikannya", kata yang tepat. Lihatlah SQL Server: Minimalkan Disk I / O
Ini berbicara tentang mengikuti DMV
Referensi:
sumber