Tôi có một vài câu hỏi liên quan đến hiệu suất của Microsoft SQL Server 2008, chủ yếu là về các kế hoạch thực hiện.Lập kế hoạch thực thi SQL caching
Theo, để MSDN, thủ tục lưu trữ có hiệu suất tốt hơn so với các truy vấn SQL trực tiếp, bởi vì:
Cơ sở dữ liệu có thể chuẩn bị, tối ưu hóa, và bộ nhớ cache kế hoạch thực hiện để các kế hoạch thực hiện có thể được tái sử dụng tại một sau đó.
Câu hỏi đầu tiên của tôi là lý do tại sao điều này xảy ra. Trước đây tôi đã đọc rằng khi sử dụng các truy vấn tham số (các câu lệnh đã chuẩn bị), kế hoạch thực hiện được lưu trữ trong các lần thực thi tiếp theo với các giá trị tiềm năng khác nhau (ngữ cảnh thực thi). Một thủ tục lưu sẵn có hiệu quả hơn không? Nếu vậy, kế hoạch thực hiện của một thủ tục lưu trữ chỉ được tạo lại theo yêu cầu, hoặc là nó ít có khả năng bị xóa khỏi bộ đệm ẩn? Là truy vấn được tham số được coi là ad-hoc query, có nghĩa là kế hoạch thực thi có nhiều khả năng bị xóa khỏi bộ nhớ cache?
Ngoài ra, vì tôi vẫn là một người mới trong lĩnh vực này, tôi tự hỏi nếu có một số lệnh chỉ hoạt động trong T-SQL. Tôi có một truy vấn mất ~ 12 giây để hoàn thành trong lần chạy đầu tiên và sau đó ~ 3 giây sau đó, trong cả Microsoft SQL Management Studio và ADO.NET. Truy vấn được cho là không hiệu quả như một phần của bản trình bày của tôi. Vấn đề là trong truy vấn của tôi, tôi sử dụng cả hai CHECKPOINT
và DBCC DROPCLEANBUFFERS
theo this article và cũng OPTION (RECOMPILE)
. Tuy nhiên, ít nhất hai đầu tiên dường như không tạo ra sự khác biệt, vì truy vấn sẽ vẫn mất 3 giây. Tôi đoán là do bộ đệm dữ liệu không bị xóa. Bất kỳ ý tưởng nào tại sao bộ nhớ cache dường như không bị xóa hoặc bất kỳ ý tưởng nào về lý do truy vấn của tôi nhanh hơn đáng kể sau lần thực thi đầu tiên?
Đó là những câu hỏi tôi có thể nghĩ đến bây giờ.
Câu hỏi hay - tôi sẽ chia bài đăng này thành một vài bài đăng, có thể một bài đăng cho câu hỏi về truy vấn được lưu trữ-proc và truy vấn tham số, một bài đăng cho nhiều lần truy vấn, v.v. –
Có lẽ bạn đã đúng; tâm trí của tôi đã suy nghĩ không để spam. :-) – Andy0708
Ý tưởng stackoverflow là để giữ cho câu hỏi tập trung để lần lượt các câu trả lời có thể được tập trung là tốt - vì vậy đừng lo lắng về việc tải trang web với một loạt các câu hỏi –