Điểm giới hạn là một thuật ngữ mà tôi nghe lần đầu tiên được sử dụng bởi chuyên gia điều chỉnh hiệu suất SQL Server và thành viên Ban cố vấn SentryOne lâu năm, Kimberly Tripp - cô ấy có một loạt blog tuyệt vời về nó ở đây. Điểm giới hạn là ngưỡng mà tại đó một kế hoạch truy vấn sẽ “mách nước” từ việc tìm kiếm một chỉ mục không phân tán không bao trùm đến việc quét chỉ mục được nhóm hoặc đống. Công thức cơ bản, không phải là một quy tắc cứng và nhanh vì có nhiều yếu tố ảnh hưởng khác, là:
- Quá trình quét chỉ mục (hoặc bảng) theo nhóm sẽ thường xảy ra khi các hàng ước tính vượt quá 33% số trang trong bảng
- Tìm kiếm không phân cụm cộng với tra cứu khóa thường sẽ xảy ra khi các hàng ước tính nằm dưới 25% số trang trong bảng
- Trong khoảng từ 25% đến 33%, nó có thể đi theo một trong hai cách
Lưu ý rằng có những “điểm tới hạn” khác của trình tối ưu hóa, chẳng hạn như khi che chỉ mục sẽ chuyển từ tìm kiếm sang quét hoặc khi nào một truy vấn sẽ song song, nhưng truy vấn mà chúng tôi tập trung vào là chỉ mục không bao gồm không bao gồm vì nó có xu hướng phổ biến nhất - thật khó để bao quát mọi truy vấn! Điều này cũng tiềm ẩn nhiều nguy cơ nhất đối với hiệu suất và khi bạn nghe ai đó đề cập đến điểm giới hạn của chỉ mục SQL Server, đây thường là ý của họ.
Điểm đến hạn trong các phiên bản Plan Explorer trước
Plan Explorer trước đây đã cho thấy hiệu ứng thực của điểm giới hạn khi tính năng đánh giá thông số đang hoạt động trên Phân tích chỉ mục , cụ thể là qua Thao tác ước tính (bắt chước) trong Tham số ngăn:
Thao tác ước tính cho các tham số đã biên dịch và thời gian chạy, dựa trên số hàng
Nếu bạn chưa khám phá mô-đun Phân tích chỉ mục, tôi khuyên bạn nên làm như vậy. Mặc dù sơ đồ kế hoạch và các tính năng khác của Plan Explorer rất tuyệt, nhưng thành thật mà nói, Phân tích chỉ mục là nơi bạn nên dành phần lớn thời gian khi điều chỉnh các truy vấn và chỉ mục. Hãy xem bài đánh giá chuyên sâu của Aaron Bertrand về các tính năng và kịch bản tại đây cũng như hướng dẫn về chỉ mục tuyệt vời của Devon Leann Wilson tại đây.
Đằng sau hậu trường, chúng tôi thực hiện phép toán điểm tới hạn và dự đoán hoạt động lập chỉ mục (tìm kiếm hoặc quét) dựa trên các hàng và số trang ước tính trong bảng cho cả các tham số đã biên dịch và thời gian chạy, sau đó mã màu cho các ô được liên kết để bạn có thể nhanh chóng xem liệu chúng có khớp nhau hay không. Nếu chúng không, như trong ví dụ ở trên, thì đó có thể là một dấu hiệu mạnh cho thấy bạn có vấn đề về đánh giá thông số.
Biểu đồ thống kê biểu đồ phản ánh sự phân bố các giá trị cho khóa hàng đầu của chỉ mục bằng cách sử dụng các cột cho các hàng bằng nhau (màu cam) và các hàng phạm vi (màu xanh lục). Đây là những giá trị giống như bạn sẽ nhận được từ DBCC SHOW_STATISTICS hoặc sys.dm_db_stats_histogram . Các phần của phân phối bị ảnh hưởng bởi cả thông số đã biên dịch và thời gian chạy được đánh dấu để cung cấp cho bạn ý tưởng gần đúng về số lượng hàng có liên quan cho mỗi. Chỉ cần chọn Giá trị tổng hợp hoặc Giá trị thời gian chạy để xem phạm vi đã chọn:
Biểu đồ biểu đồ hiển thị phạm vi bị ảnh hưởng bởi các thông số thời gian chạy
Điều khiển và Hình ảnh mới
Các tính năng ở trên rất hay, nhưng trong một thời gian, tôi cảm thấy rằng chúng tôi có thể làm nhiều việc hơn nữa để làm cho mọi thứ trở nên rõ ràng hơn. Vì vậy, trong bản phát hành mới nhất của Plan Explorer (2020.8.7), cuối ngăn Tham số có một số điều khiển mới với các hình ảnh liên quan trên biểu đồ histogram:
Các điều khiển mới cho hình ảnh biểu đồ
Lưu ý rằng biểu đồ được hiển thị theo mặc định là dành cho chỉ mục được truy vấn sử dụng để truy cập vào bảng đã chọn, nhưng bạn có thể nhấp vào bất kỳ tiêu đề chỉ mục hoặc cột bảng nào khác trong lưới để xem biểu đồ khác.
Phạm vi điểm giới hạn
Phạm vi điểm giới hạn hộp kiểm chuyển đổi dải màu đỏ nhạt được hiển thị trên biểu đồ histogram:
Chuyển đổi cho băng tần Tipping Point Range
Nếu các hàng ước tính nằm dưới phạm vi này, trình tối ưu hóa sẽ ưu tiên tìm kiếm + tra cứu và trên đó là quét bảng. Bất kỳ ai cũng có thể đoán được trong phạm vi.
Hàng ước tính (bắt chước) / Thực tế
Hàng ước tính / thực tế hộp kiểm chuyển đổi hiển thị các hàng ước tính (từ các tham số đã biên dịch) và các hàng thực tế (từ các tham số thời gian chạy). Các mũi tên trong biểu đồ bên dưới minh họa mối quan hệ giữa kiểm soát này và các yếu tố liên quan:
Chuyển đổi cho các Hàng ước tính và Thực tế trên biểu đồ histogram
Trong ví dụ này, rõ ràng là các hàng ước tính nằm dưới điểm giới hạn và các hàng thực tế được trả về nằm trên điểm giới hạn đó, điều này được phản ánh trong sự khác biệt giữa các hoạt động ước tính và thực tế được liệt kê (Tìm kiếm so với Quét). Đây là cách đánh giá thông số cổ điển, được minh họa!
Trong một bài đăng trong tương lai, tôi sẽ đi sâu vào cách điều này tương quan với những gì bạn thấy trên sơ đồ kế hoạch và lưới báo cáo. Trong khi chờ đợi, đây là tệp phiên Plan Explorer có chứa ví dụ này (đánh giá tham số tìm kiếm để quét) cũng như ví dụ quét tìm kiếm. Cả hai đều tận dụng cơ sở dữ liệu WideWorldImporters mở rộng.
Hàng trong phạm vi hoặc Hàng trong phạm vi trung bình
Các phiên bản trước của Plan Explorer đã xếp chồng các hàng bằng nhau và các hàng trong phạm vi trong một cột để biểu thị tổng số hàng trong nhóm biểu đồ. Điều này hoạt động tốt khi bạn có một vị từ bất đẳng thức hoặc phạm vi như được hiển thị ở trên, nhưng đối với các vị từ bằng nhau, điều đó không có ý nghĩa nhiều. Những gì bạn thực sự muốn xem là các hàng phạm vi trung bình vì đó là những gì trình tối ưu hóa sẽ sử dụng để ước tính. Thật không may, không có cách nào để lấy được điều này.
Trong biểu đồ Plan Explorer mới, thay vì một chuỗi cột xếp chồng lên nhau, giờ đây chúng tôi sử dụng các cột được nhóm lại với các hàng bằng nhau và các hàng phạm vi cạnh nhau và bạn kiểm soát việc hiển thị tổng số hoặc các hàng phạm vi trung bình nếu thích hợp bằng cách sử dụng Hàng phạm vi / Hàng phạm vi trung bình bộ chọn. Sắp có thêm thông tin về điều này…
Kết thúc
Tôi thực sự vui mừng về những tính năng mới này và hy vọng bạn thấy chúng hữu ích. Hãy dùng thử chúng bằng cách tải xuống Plan Explorer mới. Đây chỉ đơn thuần là một giới thiệu ngắn gọn và tôi mong muốn được đề cập đến một số tình huống khác nhau ở đây. Như mọi khi, hãy cho chúng tôi biết suy nghĩ của bạn!