Một lần đọc logic được tính khi một trang duy nhất được truy xuất từ bộ đệm bộ đệm trong khi thực hiện truy vấn. Điều này được tính bất kể sử dụng vật lý hay đọc trước để lưu trang, hoặc nếu trang đã tồn tại trong bộ đệm bộ đệm. Do đó, số lần đọc logic là thước đo số lần các trang thực sự được chạm vào bộ nhớ trong khi thực hiện truy vấn.
Một lần đọc vật lý được tính khi công cụ lưu trữ đọc một hoặc nhiều trang từ bộ lưu trữ vì trang được yêu cầu chưa có trong bộ đệm. Điều này không bao gồm IO vật lý được thực hiện bằng cách quét trước.
Một lần đọc trước được tính khi công cụ lưu trữ đọc một hoặc nhiều phạm vi đầy đủ (mỗi phạm vi là 8 trang liền kề) từ bộ lưu trữ trong quá trình quét tuần tự. Đọc trước đọc dữ liệu trước vào bộ nhớ một cách mạnh mẽ để các trang có khả năng đã được lưu vào bộ nhớ cache khi cần truy vấn. Số lượng phạm vi được đọc bởi các lần quét trước đọc khác nhau tùy theo phiên bản và phiên bản SQL Server cũng như phân mảnh. Tôi đã thấy các lần quét trước đọc tới 4 MB cùng một lúc bằng cách sử dụng một IO thu thập phân tán duy nhất trong quá trình quét trong Phiên bản doanh nghiệp bằng phiên bản SQL Server mới nhất.
Lưu ý rằng công cụ lưu trữ SQL Server hoạt động khác với bộ đệm lạnh (ví dụ: sau khi khởi động lại hoặc DBCC DROPCLEANBUFFERS
). Khi bộ đệm chưa được làm nóng (Trang đích của Trình quản lý bộ đệm đã đáp ứng), công cụ lưu trữ thực hiện toàn bộ mức đọc 64K thay vì đọc 8 trang duy nhất để đọc các trang vào bộ đệm. Điều này làm ấm bộ đệm nhanh hơn nhiều so với những gì khác xảy ra.
Tôi thích tập trung vào việc đọc logic hơn là vật lý cho mục đích truy vấn và điều chỉnh chỉ mục bởi vì đó là thước đo tốt hơn cho công việc được thực hiện bởi truy vấn. Nó chỉ là do tình cờ cho dù dữ liệu được lưu trữ hay không. Kiểm tra với bộ đệm lạnh là một thước đo hiệu suất lưu trữ hơn hiệu năng truy vấn, IMHO và không đại diện cho những gì sẽ xảy ra trong một khối lượng công việc sản xuất với bộ đệm ấm.