Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Tham số Sniffing (hoặc Spoofing) trong SQL Server

FYI - bạn cần lưu ý một số điều khác khi bạn đang làm việc với SQL 2005 và các procs được lưu trữ với các tham số.

SQL Server sẽ biên dịch kế hoạch thực thi của chương trình đã lưu trữ với tham số đầu tiên được sử dụng. Vì vậy, nếu bạn chạy cái này:

usp_QueryMyDataByState 'Rhode Island'

Kế hoạch thực thi sẽ hoạt động tốt nhất với dữ liệu của một trạng thái nhỏ. Nhưng nếu ai đó quay lại và bỏ chạy:

usp_QueryMyDataByState 'Texas'

Kế hoạch thực thi được thiết kế cho dữ liệu cỡ Rhode-Island có thể không hiệu quả bằng dữ liệu cỡ Texas. Điều này có thể tạo ra kết quả đáng ngạc nhiên khi máy chủ được khởi động lại, bởi vì kế hoạch thực thi mới được tạo sẽ được nhắm mục tiêu vào bất kỳ thông số nào được sử dụng trước - không nhất thiết phải là thông số tốt nhất. Kế hoạch sẽ không được biên dịch lại cho đến khi có lý do chính đáng để thực hiện, chẳng hạn như nếu số liệu thống kê được xây dựng lại.

Đây là nơi các kế hoạch truy vấn xuất hiện và SQL Server 2008 cung cấp rất nhiều tính năng mới giúp các DBA ghim một kế hoạch truy vấn cụ thể vào vị trí lâu dài cho dù tham số nào được gọi trước.

Mối quan tâm của tôi là khi bạn xây dựng lại chương trình đã lưu trữ của mình, bạn đã buộc kế hoạch thực thi phải biên dịch lại. Bạn đã gọi nó với tham số yêu thích của mình, và tất nhiên là nó rất nhanh - nhưng vấn đề có thể không phải là proc được lưu trữ. Có thể là lúc nào đó proc được lưu trữ đã được biên dịch lại với một bộ tham số bất thường và do đó, một kế hoạch truy vấn không hiệu quả. Bạn có thể chưa khắc phục được bất cứ điều gì và bạn có thể gặp phải vấn đề tương tự vào lần tiếp theo máy chủ khởi động lại hoặc kế hoạch truy vấn được biên dịch lại.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. DATEDIFF_BIG () Ví dụ trong SQL Server

  2. UNION ALL so với OR điều kiện trong truy vấn máy chủ sql

  3. 5 Lợi ích của việc giám sát hiệu suất cơ sở dữ liệu chủ động

  4. Cách bắt đầu với SQL Server trên Azure

  5. Rủi ro xung đột UUID sử dụng các thuật toán khác nhau