SQL Server'da, kümelenmiş bir dizinin geriye doğru taraması neden paralellik kullanamıyor?


21

SQL Server internals hakkında okudum ve her kitap veya blog bu geriye taramalar hakkında bahseder.

Kümelenmiş bir dizinin geriye doğru taraması paralellik kullanamaz

Bir şey söyleyen tek yazı, aşağıdakilerden biri. Gönderi, SQL Server ekibinin geriye doğru tarama için gerekli optimizasyonları uygulamadığını söylüyor. https://www.itprotoday.com/sql-server/descending-indexes

Yaprak seviyesi sayfaları iki katına bağlı bir liste kullanılarak bağlandığından, geriye doğru taramanın neden ileriye doğru taramanın farklı olduğunu anlamıyorum. Herhangi bir açıklama gerçekten takdir edilmektedir.

Yanıtlar:


19

Başvurulan makale, özellikle geri sipariş verilen taramaların SQL Server 2008'de (CU6'dan itibaren) paralel olmama nedeninin teknik olmadığını, ancak özelliğin müşteriler tarafından talep edilmediği ve geliştirici ekibinin bunu uygulama zahmetine girmediğini belirtir.

Makalenin yaklaşık 10 yıl önce şu anda desteklenmeyen SQL Server 2008 sürümü bağlamında yazıldığını unutmayın. Depolama motorunda ve optimize edicisinde önemli değişiklikler oldu. Bununla birlikte, ASCsorgunun paralel bir planını DESCve makalenin SQL Server 2017'deki demo sorgusunun sürümüne ilişkin bir seri planını görüyorum :

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

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

Aynı sorguları SQL 2019 CTP 3.2'de çalıştırmak, sorguyu değiştirmediysem her ikisi için de bir seri plan gösterir WHERE orderid <= 50000; bu durumda daha sonra SQL Server 2017 ile aynı davranışı gözlemledim. Öyleyse, paralel geriye doğru taramanın henüz uygulanmadığı ya da Bunu gözlemlemek için farklı bir senaryoya ihtiyaç vardır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.