Trong SQL Server, tại sao quét ngược chỉ mục cụm không thể sử dụng song song?


21

Tôi đã đọc về các phần bên trong của SQL Server và mọi cuốn sách hoặc blog đều đề cập đến điều này về các bản quét ngược.

Quét ngược chỉ mục cụm không thể sử dụng song song

Bài viết duy nhất nói điều gì đó là cái này dưới đây. Bài đăng nói rằng nhóm SQL Server đã không thực hiện các tối ưu hóa cần thiết để quét ngược. https://www.itprotoday.com/sql-server/desceinating-indexes

Vì các trang cấp độ lá được liên kết bằng cách sử dụng danh sách liên kết đôi, tôi không hiểu tại sao quét ngược lại khác với quét tiến. Bất kỳ làm rõ là thực sự đánh giá cao.

Câu trả lời:


19

Bài viết được tham chiếu nêu cụ thể lý do quét ngược theo thứ tự không được song song trong SQL Server 2008 (kể từ CU6) không phải là kỹ thuật mà vì tính năng này không được khách hàng yêu cầu và nhóm nhà phát triển không bận tâm thực hiện nó.

Lưu ý rằng bài viết đã được viết cách đây gần 10 năm trong bối cảnh phiên bản SQL Server 2008 hiện không được hỗ trợ. Đã có những thay đổi đáng kể cho công cụ lưu trữ và tối ưu hóa. Điều đó nói rằng, tôi vẫn thấy một kế hoạch song song cho ASCtruy vấn và kế hoạch nối tiếp cho DESCphiên bản từ truy vấn demo của bài viết trên SQL Server 2017:

SELECT *
FROM dbo.Orders
WHERE orderid <= 100000
ORDER BY orderdate ASC;

SELECT *
FROM dbo.Orders
WHERE orderid <= 100000
ORDER BY orderdate DESC;

Chạy các truy vấn tương tự trong SQL 2019 CTP 3.2 cho thấy một kế hoạch nối tiếp cho cả hai trừ khi tôi thay đổi truy vấn thành WHERE orderid <= 50000, sau đó tôi đã quan sát hành vi tương tự như SQL Server 2017. Vì vậy, có vẻ như quét ngược song song vẫn chưa được thực hiện hoặc một kịch bản khác nhau là cần thiết để quan sát 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.