TÙY CHỌN (NHANH CHÓNG 1) thực sự tương tác với khách hàng như thế nào?


7

Đây là câu hỏi 1 trên 2 liên quan đến OPTION (FAST 1);

Chúng tôi vừa nâng cấp cơ sở dữ liệu ERP của mình từ SQL 2000 EE lên 2008 R2 EE và chúng tôi đã nhận thấy sự gia tăng chặn trong cơ sở dữ liệu. Tôi đã thu hẹp nó xuống theo những gì tôi tin là tuyên bố vi phạm trong mã của nhà cung cấp đó là:

SELECT MAX(column)
FROM [table] 
WHERE <condition> 
OPTION (FAST 1);

Spid để lại một giao dịch mở và khóa trên bàn, chặn tất cả các khách hàng khác. Tuy nhiên, ứng dụng khách gọi dường như không còn tương tác với máy chủ để báo cho máy chủ biết rằng nó đã nhận được dữ liệu để kết thúc phiên.

Đọc tài liệu về Gợi ý truy vấn , tôi thấy tuyên bố này

NHANH TAY số

Chỉ định rằng truy vấn được tối ưu hóa để truy xuất nhanh số đầu tiên. Đây là một số nguyên không âm. Sau khi số đầu tiên được trả về, truy vấn tiếp tục thực hiện và tạo tập kết quả đầy đủ của nó.

Điều này khiến tôi tự hỏi liệu máy khách có bị lỗi giao tiếp nào đó không, máy chủ có giữ giao dịch mở không, xử lý toàn bộ kết quả sau khi các nhàng đầu tiên được trả lại và để giao dịch mở? Quá trình này là một quy trình nội bộ vì vậy tôi thực sự không thể xem người dùng cuối thực hiện phiên để thực hiện và đây không phải là điều xảy ra mỗi khi quy trình nội bộ xảy ra. Tuy nhiên, nó chỉ được sử dụng bởi quy trình nội bộ.

Đọc câu trả lời của Remus trên SO, có vẻ như nó quá mức cần thiết cho sự đơn giản của truy vấn. Nhìn vào truy vấn, nếu họ nhận được nhiều hơn một kết quả từ việc không được liên kết MAXthì có gì đó rất tanh.

Vì vậy, khi tôi chuẩn bị làm việc với nhà cung cấp, tôi đã tự hỏi liệu tôi có thể bắt đầu xác định chính xác các vấn đề chặn của chúng tôi trên thực tế là gợi ý truy vấn này đang được sử dụng hay không.

Xin vui lòng chỉnh sửa / yêu cầu chỉnh sửa vì tôi biết điều này thực sự có thể không rõ ràng.

Câu trả lời:


6

Nếu đó là một truy vấn trả về hơn 1 hàng, tôi sẽ suy đoán rằng ai đó ở nhà cung cấp (quay lại khi nào, được cung cấp phiên bản SQL Server) đã tình cờ tìm thấy trình tối ưu hóa truy vấn tạo ra một kế hoạch thích hợp hơn khi FASTđược chỉ định làm gợi ý.

Vì nó chỉ trả về 1 hàng, nên lời giải thích có thể có nhiều điểm chung với định lý khỉ vô hạn hơn là phán đoán hợp lý. Một thiếu niên nhìn thấy một gợi ý cho FASTvà quyết định rằng tốt hơn là truy vấn của anh ta không được nhanh chóng.

Điều này khiến tôi tự hỏi liệu máy khách có bị lỗi giao tiếp nào đó không, máy chủ có giữ giao dịch mở không, xử lý toàn bộ kết quả sau khi n hàng đầu tiên được trả lại và để giao dịch mở?

Truy vấn trả về 1 hàng để không có kết quả nào được đặt để xử lý. Tôi có xu hướng nghi ngờ rằng có mã khác trong ngăn xếp gây ra vấn đề.

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.