Pembuatan profil kueri adalah cara Anda mengetahui apa yang terjadi di dalam kotak hitam kinerja SQL Server.
Pengguna memilikinya dengan mudah. DBA tidak.
Pikirkan tentang opsi mudah yang dimiliki pengguna saat aplikasi database berjalan buruk:
- Ambil kopi dan tunggu.
- Menghina komputer.
- Keluhan ke sesama pengguna.
- Kirimkan tiket masalah.
Bukankah itu kehidupan Riley dibandingkan dengan opsi yang Anda miliki sebagai DBA?
- Cari sesi yang diblokir.
- Periksa rasio hit cache buffer.
- Ukur waktu tunggu I/O maksimum.
- Periksa harapan hidup halaman.
- Lihat apakah indeks tidak ada atau perlu dibangun kembali.
- Cari kunci/deadlock.
- Periksa penggunaan CPU.
- Tinjau log aplikasi untuk pesan kehabisan memori.
- Pastikan database tempdb dikonfigurasi dengan benar.
Ini bisa menjadi salah satu dari masalah perangkat lunak tersebut, dan mereka biasanya mengarahkan Anda ke solusi untuk mengoptimalkan kueri atau mengubah konfigurasi Anda. Atau bisa juga masalah perangkat keras, dan solusinya adalah membeli lebih banyak memori atau kekuatan pemrosesan.
Karena aplikasi database sebagian besar tentang mengeksekusi banyak kueri SQL, masalah kinerja memiliki banyak tempat untuk disembunyikan di SQL Server. Jika Anda seorang pengguna, Anda dapat mengatakan, “Oh, well, masalahnya pasti ada di dalam kotak hitam itu di suatu tempat. Bukan pekerjaan saya.”
Tetapi sebagai DBA, Anda tidak memiliki kemewahan itu. Anda harus membuka kotak hitam, memanjat masuk, menemukan kekacauan dan memperbaikinya.
Pembuatan profil kueri 101 dengan pemantauan kinerja server SQL
Secara umum, tujuan Anda dengan pemantauan kinerja server adalah untuk mengawasi bagaimana kinerja kueri SQL Anda dari waktu ke waktu dan selama pertumbuhan volume transaksi di SQL Server Anda. Anda dapat mencapai tujuan itu dengan beberapa cara.
Lihat rencana penjelasannya
Rencana penjelasan menunjukkan apa yang akan dilakukan SQL Server dalam mengeksekusi kueri, termasuk tabel yang akan digabungkan, jenis penggabungan yang akan dilakukan, jumlah baris yang akan disentuh, dan indeks yang akan digunakan.
Apa yang bisa dijelaskan rencana itu kepada Anda? Untuk satu hal, Anda dapat melihat cara meningkatkan kueri itu sendiri dengan, misalnya, menghapus NESTED LOOP JOIN yang ditambahkan oleh salah satu pengembang database pada tabel besar. Atau, Anda dapat mengetahui dari rencana penjelasan yang Anda perlukan untuk membuat atau membangun kembali indeks untuk tabel tertentu.
Rencana penjelasan adalah titik awal yang baik untuk pembuatan profil kueri, bahkan sebelum Anda benar-benar menjalankan kueri yang dicurigai.
Jalankan kueri
Untuk menjalankan kueri dan melihat sumber daya mana yang terpengaruh saat runtime, Anda terlebih dahulu membuat pelacakan untuk menandai peristiwa saat terjadi. Dengan jejak, Anda dapat menangkap data dan melihat kesalahan yang muncul. Alat pembuatan profil menyimpan data yang telah diambil oleh pelacakan dan menampilkannya dengan cara yang memudahkan Anda menemukan dan memecahkan masalah kueri yang bermasalah.
Kombinasi pelacakan dan alat pembuatan profil dapat menjawab banyak pertanyaan:
- Kueri mana yang paling banyak menghabiskan memori?
- Berapa lama waktu yang dibutuhkan untuk mengeksekusi setiap kueri?
- Kunci mana yang disetel SQL Server untuk setiap kueri?
- Kueri mana yang dapat dijalankan SQL Server dari cache buffer? Seberapa sering harus masuk ke disk?
- Berapa banyak baris yang diperiksa setiap kueri?
- Berapa banyak permintaan per menit yang dipenuhi database?
Anda akan mendapatkan pembacaan yang paling akurat dengan mengeksekusi kueri pada database produksi Anda, tetapi itu juga dapat memperlambat pemrosesan oleh pelanggan dan pengguna dunia nyata Anda. Jika bisa, uji terlebih dahulu pada pengembangan atau uji instance di mana Anda tidak bersaing untuk memori atau I/O dengan instance produksi Anda.
Berbicara tentang pelanggan dan pengguna, tujuan Anda dalam pembuatan profil kueri adalah membuat mereka senang. Pembuatan profil dapat dengan mudah mengungkap lusinan masalah di database Anda, tetapi alasan Anda membuka kotak hitam adalah untuk memecahkan masalah yang paling menyakitkan. Setelah mengambil data dari satu atau dua hari penggunaan normal, Anda dapat menemukan masalah kinerja server SQL yang paling menyulitkan pengguna Anda. Mungkin indeks yang hilang memperlambat pengambilan catatan, atau terlalu banyak indeks memperlambat penyisipan catatan dan pembaruan basis data. Mungkin kueri yang sering digunakan adalah mengumpulkan informasi yang tidak dipedulikan lagi.
Gunakan alat pembuatan profil dengan bijak
Alat pembuatan profil menyelamatkan Anda dari proses yang membosankan dalam menyiapkan setiap peristiwa, filter, dan panggilan prosedur secara manual untuk semua yang ingin Anda lacak. Dengan begitu banyak hal yang terjadi di dalam kotak hitam kinerja SQL Server, Anda dapat dengan mudah menangkap terlalu banyak data untuk melihat hutan untuk pohon.
Alat yang baik memungkinkan Anda untuk memilih dengan cermat apa yang Anda lacak sehingga, misalnya, Anda tidak menangkap ratusan Lock:Acquired event dan tidak perlu mengisi layar Anda dengan mereka. Namun, jika Anda perlu memeriksa peristiwa yang sering terjadi, gunakan filter seperti nama aplikasi atau nama tabel.
Alih-alih menulis data pelacakan ke tabel dalam database, pertimbangkan untuk menyimpannya ke file terpisahnya sendiri. Itu membuat overhead jejak menjadi beban pada SQL Server dan berpotensi mencondongkan hasil. Jika alat pembuatan profil Anda menyukai data yang diambil dari tabel, Anda dapat mengimpor data dari file ke tabel nanti.
Tingkatkan pemantauan kinerja SQL Server Anda dengan pembuatan profil kueri
Pengguna Anda menjauh dari kotak hitam kinerja SQL Server, tetapi Anda tidak harus melakukannya. Pembuatan profil kueri adalah cara Anda membuka kotak, mencari tahu apa yang terjadi di dalam, dan memulai pemecahan masalah.
Tapi jangan menunggu sampai Anda kesulitan menggunakannya. Pembuatan profil kueri lebih seperti memeriksa oli daripada mengganti mesin. Ini membantu tugas DBA yang biasa untuk memperbarui kueri usang dan memodifikasi desain sehingga database Anda mengikuti perubahan dalam bisnis.