Jawaban lainnya benar tentang alasan tidak berjalan DBCC FREEPROCCACHE
. Namun, ada beberapa alasan untuk melakukannya:
- Konsistensi
Jika Anda ingin membandingkan dua kueri atau prosedur berbeda yang mencoba melakukan hal yang sama dengan cara yang berbeda, mereka cenderung membuka halaman yang sama. Jika Anda menjalankan kueri # 1 secara naif lalu meminta # 2, yang kedua mungkin jauh lebih cepat hanya karena halaman-halaman itu di-cache oleh kueri pertama. Jika Anda menghapus cache sebelum setiap eksekusi, mereka mulai dengan pijakan yang rata.
Jika Anda ingin menguji kinerja cache panas, pastikan untuk menjalankan kueri beberapa kali, berganti-ganti, dan membuang beberapa run pertama. Rata-rata hasilnya.
- Kinerja terburuk
Katakanlah Anda memiliki kueri yang membutuhkan satu detik terhadap cache panas tetapi satu menit terhadap cache dingin. Optimasi yang membuat kueri di dalam memori 20% lebih lambat tetapi kueri terikat IO 20% lebih cepat bisa menjadi kemenangan besar: selama operasi normal, tidak ada yang akan melihat 200 ms ekstra dalam keadaan normal, tetapi jika sesuatu memaksa kueri untuk jalankan terhadap disk, mengambil 48 detik, bukannya 60 mungkin menghemat penjualan.
Ini kurang menjadi perhatian pada sistem modern dengan memori puluhan gigabyte, dan penyimpanan SAN dan SSD yang relatif cepat, tetapi tetap penting. Jika beberapa analis menjalankan kueri pemindaian tabel besar-besaran terhadap basis data OLTP Anda yang menghapus setengah dari cache buffer Anda, kueri yang efisien penyimpanan akan membuat Anda kembali lebih cepat dengan kecepatan.
DBCC FLUSHPROCINDB
: Sejumlah parameter yang salah diberikan pada pernyataan DBCC.