Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Parameter Sniffing (atau Spoofing) di SQL Server

FYI - Anda perlu mengetahui hal lain saat bekerja dengan SQL 2005 dan menyimpan procs dengan parameter.

SQL Server akan mengkompilasi rencana eksekusi proc yang disimpan dengan parameter pertama yang digunakan. Jadi jika Anda menjalankan ini:

usp_QueryMyDataByState 'Rhode Island'

Rencana eksekusi akan bekerja paling baik dengan data negara bagian kecil. Tetapi jika seseorang berbalik dan berlari:

usp_QueryMyDataByState 'Texas'

Rencana eksekusi yang dirancang untuk data berukuran Rhode-Island mungkin tidak seefisien dengan data berukuran Texas. Ini dapat menghasilkan hasil yang mengejutkan ketika server di-restart, karena rencana eksekusi yang baru dibuat akan ditargetkan pada parameter apa pun yang digunakan terlebih dahulu - belum tentu yang terbaik. Rencana tidak akan dikompilasi ulang sampai ada alasan besar untuk melakukannya, seperti jika statistik dibangun kembali.

Di sinilah rencana kueri masuk, dan SQL Server 2008 menawarkan banyak fitur baru yang membantu DBA menyematkan rencana kueri tertentu untuk jangka panjang, apa pun parameter yang dipanggil terlebih dahulu.

Kekhawatiran saya adalah ketika Anda membangun kembali proc Anda yang tersimpan, Anda memaksa rencana eksekusi untuk dikompilasi ulang. Anda menyebutnya dengan parameter favorit Anda, dan tentu saja itu cepat - tetapi masalahnya mungkin bukan pada proc yang disimpan. Mungkin saja proc yang disimpan dikompilasi ulang di beberapa titik dengan serangkaian parameter yang tidak biasa dan dengan demikian, rencana kueri yang tidak efisien. Anda mungkin tidak memperbaiki apa pun, dan Anda mungkin menghadapi masalah yang sama saat server dimulai ulang atau paket kueri dikompilasi ulang.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengapa kita selalu lebih suka menggunakan parameter dalam pernyataan SQL?

  2. Jenis teks, nteks, dan data gambar> tidak dapat dibandingkan atau diurutkan, kecuali jika menggunakan operator IS NULL atau LIKE>

  3. Pilih ukuran database SQL Server

  4. Tinjauan Perangkat Lunak – Perbaikan Stellar untuk MS SQL

  5. Konsep Desain Database dengan SQL Server Management Studio (SSMS) Bagian 1