Saya berusaha meningkatkan kinerja prosedur tersimpan. Ketika saya menjalankan SP, hampir selesai secara instan, seolah-olah ada sesuatu yang di-cache. Saya diberitahu untuk menggunakan dua baris SQL berikut sebelum mengeksekusi SP di SSMS:
DBCC DROPCLEANBUFFERS
DBCC FREEPROCCACHE
Ketika saya menjalankan SP dengan dua baris kode di atas SP selesai dalam waktu sekitar 8 detik. Namun, apakah ini benar-benar memberi saya waktu eksekusi yang sebenarnya (seolah-olah saya menjalankan ini dari aplikasi)? Bagaimana aku tahu?
Jawaban:
Perintah-perintah itu melakukan dua hal:
Anda pada dasarnya mendapatkan waktu yang setara dengan skenario "kasus terburuk" - Anda baru saja me-reboot server dan tidak ada yang ada dalam memori. Proses selanjutnya tidak perlu membayar biaya untuk menarik data dari disk karena halaman tersebut sudah dimuat ke dalam memori.
Ini mirip dengan situasi dunia nyata - pengguna pertama Anda yang menjalankan kueri tertentu kemungkinan harus menunggu lebih lama daripada yang berjalan berikutnya, dengan asumsi Anda memeriksa data yang sama.
Metode bagus yang saya suka gunakan adalah menjalankan beberapa kali dan mengambil rata-rata. Ini sangat membantu dalam lingkungan bersama karena Anda tidak memiliki kontrol penuh atas sumber daya bersama seperti tempdb.
Anda juga dapat menggunakan perintah ini untuk mendapatkan informasi lebih lanjut tentang apa yang sebenarnya terjadi di balik layar:
Ini akan memberi Anda informasi terperinci tentang pembacaan halaman dari disk (per objek), pembacaan halaman logis, waktu yang dihabiskan untuk menyusun rencana, dan waktu yang dihabiskan untuk menjalankan kueri.
sumber
GO 5
seperti di SSMS. Ini unduhan gratis, saya tidak mencoba menjual apa pun kepada Anda. sqlsentry.net/plan-explorer/sql-server-query-view.asp