web-dev-qa-db-fra.com

Dans SQL Server, pourquoi une analyse en arrière d'un index cluster ne peut-elle pas utiliser le parallélisme?

J'ai lu des informations sur SQL Server et chaque livre ou blog en parle à propos des analyses en arrière.

Une analyse en arrière d'un index clusterisé ne peut pas utiliser le parallélisme

Le seul message qui a dit quelque chose est celui-ci ci-dessous. Le message indique que l'équipe SQL Server n'a pas mis en œuvre les optimisations requises pour une analyse en arrière. https://www.itprotoday.com/sql-server/descending-indexes

Étant donné que les pages de niveau feuille sont liées à l'aide d'une liste doublement liée, je ne comprends pas pourquoi un balayage vers l'arrière est différent d'un balayage vers l'avant. Toute clarification est vraiment appréciée.

21
Kishan Dasari

L'article référencé indique spécifiquement que la raison pour laquelle les analyses en amont n'ont pas été parallélisées dans SQL Server 2008 (à partir de CU6) n'est pas technique mais parce que la fonctionnalité n'a pas été demandée par les clients et que l'équipe de développement n'a pas pris la peine de l'implémenter.

Notez que l'article a été écrit il y a près de 10 ans dans le contexte de la version désormais non prise en charge de SQL Server 2008. Des modifications importantes ont été apportées au moteur de stockage et à l'optimiseur. Cela dit, je vois toujours un plan parallèle pour la requête ASC et un plan série pour la version DESC de la requête de démonstration de l'article sur 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;

L'exécution de ces mêmes requêtes sous SQL 2019 CTP 3.2 montre un plan série pour les deux, sauf si j'ai changé la requête en WHERE orderid <= 50000, où j'ai ensuite observé le même comportement que SQL Server 2017. Il semble donc que soit l'analyse en arrière parallèle n'a pas encore été implémentée, soit un scénario différent est nécessaire pour l'observer.

19
Dan Guzman