Chạy lại một kế hoạch truy vấn thực tế cụ thể


7

Tôi đã nắm bắt được một kế hoạch truy vấn thực tế cho một truy vấn cụ thể.

Sau đó, tôi đã thay đổi một số thứ xung quanh (bao gồm cập nhật số liệu thống kê) và chạy lại truy vấn cụ thể đó. Bây giờ kế hoạch truy vấn thực tế là khác nhau (có ý nghĩa).

Các truy vấn bây giờ chạy nhanh hơn rất nhiều. Tôi tò mò liệu kế hoạch thực hiện mới có liên quan gì đến điều này không, bởi vì những thay đổi khác (thay đổi thiết lập IO, cài đặt VM, khởi động lại cá thể sql, v.v.) cũng có thể gây ra sự cải thiện về hiệu suất. Để kiểm tra điều này, tôi muốn chạy truy vấn một lần nữa và thử buộc SQL Server sử dụng kế hoạch thực hiện cũ.

Câu hỏi : có cách nào để chạy lại truy vấn với kế hoạch thực hiện do người dùng cung cấp hoặc thậm chí chạy truy vấn trực tiếp từ kế hoạch đó không?

Đây là những gì tôi đã cố gắng để tìm ra điều này:

Vì vậy, điểm mấu chốt: điều này có thể? Nếu vậy: làm thế nào?


Tôi đã sử dụng cách sau để kiểm tra các truy vấn chạy dài và ngắn trên hệ thống dev & test của mình. Xóa các kế hoạch, bộ đệm, bộ nhớ cache hiện có và thực hiện các truy vấn với dấu vết trên. Sử dụng các hàm thả / miễn phí dbcc để xóa phiên, bộ đệm, bộ đệm, v.v. và tắt hoặc tắt theo dõi. Không liên quan nhưng hữu ích, là để xem thỏa thuận với dữ liệu trong bảng là gì. Xin lưu ý rằng tôi thấy rằng bạn đang sử dụng S2K12 để các ref này phù hợp. Hành vi có thể khác nhau trong các phiên bản trước của Sql Server. Hi vọng điêu nay co ich. DBCC FREESYSTEMCACHE, DROPCLEANBUFFERS, Trace On, show_statistic, v.v.
Ray Porrata

Câu trả lời:


10

Đúng.

Bạn cần USE PLANgợi ý.

Trong đó bạn cung cấp XMLtừ kế hoạch đầu tiên.

SELECT *
FROM T
OPTION (USE PLAN N'<?xml version="1.0" encoding="utf-16"?> ....')

Mặc dù nó không đảm bảo rằng kế hoạch sẽ hoàn toàn giống nhau (ví dụ: các toán tử vô hướng tính toán có thể di chuyển chẳng hạn), nó có thể sẽ khá gần.


Cảm ơn, chính xác những gì tôi đã yêu cầu. (Đáng tiếc là nó để lại tôi với một vấn đề mới: " Một kế hoạch truy vấn không thể tìm được vì ưu vượt quá số hoạt động cho phép trong khi tìm kiếm kế hoạch quy định tại SỬ DỤNG KẾ HOẠCH gợi ý. ", Nhưng đó là một vấn đề khác để đối phó với tôi đoán.)
Jeroen

@Jeroen - Hừm. Không chắc chắn nếu có bất kỳ công việc xung quanh cho điều đó. Có thể có một số cờ theo dõi sẽ tăng giới hạn đó nhưng nếu có thì tôi không biết!
Martin Smith

Không có vấn đề gì, thx vì sự giúp đỡ của bạn trong mọi trường hợp: đã học được điều gì đó mới hôm nay! : D
Jeroen

@Jeroen - Có thể TF 8780 không có giấy tờ mà vô hiệu hóa thời gian chờ tối ưu hóa ? Không chắc chắn nếu điều đó sẽ có hiệu quả mong muốn.
Martin Smith
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.