Traitement de requêtes intelligent dans les bases de données SQL

S’applique à : SQL Server (toutes les versions prises en charge) Azure SQL Database Azure SQL Managed Instance

La famille de fonctionnalités de traitement de requêtes intelligent inclut des fonctionnalités qui améliorent les performances des charges de travail existantes avec un minimum d’effort d’implémentation à entreprendre. Le graphique suivant détaille la famille de fonctionnalités IQP et la date à laquelle elles ont été introduites pour SQL Server. Toutes les fonctionnalités IQP sont disponibles dans Azure SQL Managed Instance et Azure SQL Base de données. Certaines fonctionnalités dépendent du niveau de compatibilité de la base de données.

Diagramme de la famille de fonctionnalités Traitement intelligent des données avec la date d’entrée dans SQL Server.

Regardez cette vidéo de 6 minutes pour obtenir un aperçu du traitement intelligent des requêtes :

Pour obtenir des démonstrations et des exemples de code de fonctionnalités de traitement intelligent des requêtes (IQP) sur GitHub, visitez https://aka.ms/IQPDemos.

Vous pouvez faire en sorte que les charges de travail soient automatiquement éligibles au traitement de requêtes intelligent en activant le niveau de compatibilité applicable pour la base de données. Vous pouvez définir cette option à l’aide de Transact-SQL. Par exemple :

ALTER DATABASE [WideWorldImportersDW] SET COMPATIBILITY_LEVEL = 150;

Le tableau suivant détaille toutes les fonctionnalités du traitement de requêtes intelligent ainsi que les exigences qui y sont associées pour le niveau de compatibilité de base de données. Pour plus d’informations sur toutes les fonctionnalités IQP, y compris les notes de publication et des descriptions plus détaillées, consultez Détails des fonctionnalités de traitement intelligent des requêtes (IQP).

Fonctionnalités IQP pour Azure SQL Database, Azure SQL Managed Instance, SQL Server 2022 (16.x)

Fonctionnalité IQP Pris en charge dans Azure SQL Database et Azure SQL Managed Instance Pris en charge dans SQL Server 2022 (16.x) Description
Jointures adaptatives (mode batch) Oui, à partir du niveau de compatibilité de la base de données 140 Oui, à partir de SQL Server 2017 (14.x) avec le niveau de compatibilité de base de données 140 Les jointures adaptatives sélectionnent dynamiquement un type de jointure lors de l’exécution en fonction des lignes d’entrée réelles.
Nombre approximatif distinct Oui Oui, à partir de SQL Server 2019 (15.x) Fournit un comptage distinct (COUNT DISTINCT) approximatif pour les scénarios Big Data avec les avantages de performances élevées et d’une faible empreinte mémoire.
Centile approximatif Oui, à partir du niveau de compatibilité de la base de données 110 Oui, à partir de SQL Server 2022 (16.x) avec le niveau de compatibilité 110 Calculez rapidement des centiles pour un grand jeu de données avec des limites d’erreur acceptables basées sur le classement pour une prise de décision rapide à l’aide de fonctions d’agrégation de centiles approximatives.
Mode Batch sur Rowstore Oui, à partir du niveau de compatibilité de la base de données 150 Oui, à partir de SQL Server 2019 (15.x) avec le niveau de compatibilité 150 Fournit un mode batch pour les charges de travail DW relationnelles utilisant le processeur de manière intensive sans nécessiter d’index columnstore.
Commentaires sur l’estimation de la cardinalité (CE) Oui, en préversion, à partir du niveau de compatibilité de la base de données 160 Oui, à partir de SQL Server 2022 (16.x) avec le niveau de compatibilité 160 Ajuste automatiquement les estimations de cardinalité pour les requêtes répétées afin d’optimiser les charges de travail où des hypothèses CE inefficaces entraînent de mauvaises performances des requêtes. Les commentaires CE identifient et utilisent une hypothèse de modèle qui correspond mieux à une requête et à une distribution de données spécifiques pour améliorer la qualité du plan d’exécution des requêtes.
Commentaires sur les degrés de parallélisme (DOP) Aucune Oui, à partir de SQL Server 2022 (16.x) avec le niveau de compatibilité 160 Ajuste automatiquement le degré de parallélisme pour les requêtes répétées afin d’optimiser les charges de travail où un parallélisme inefficace peut entraîner des problèmes de performances. Nécessite l’activation de Magasin des requêtes.
Exécution entrelacée Oui, à partir du niveau de compatibilité de la base de données 140 Oui, à partir de SQL Server 2017 (14.x) avec le niveau de compatibilité de base de données 140 Utilise la cardinalité réelle de la fonction de table multi-instruction rencontrée lors de la première compilation au lieu d’une estimation fixe.
Commentaires sur l’octroi de mémoire (mode Batch) Oui, à partir du niveau de compatibilité de la base de données 140 Oui, à partir de SQL Server 2017 (14.x) avec le niveau de compatibilité de base de données 140 Si une requête en mode batch a des opérations débordant sur le disque, ajoutez de la mémoire pour les exécutions suivantes. Si une requête gaspille > 50 % de la mémoire qui lui est allouée, réduisez la taille de l’octroi de mémoire pour les exécutions consécutives.
Commentaires sur l’octroi de mémoire (mode Ligne) Oui, à partir du niveau de compatibilité de la base de données 150 Oui, à partir de SQL Server 2019 (15.x) avec le niveau de compatibilité de la base de données 150 Si une requête en mode ligne a des opérations débordant sur le disque, ajoutez de la mémoire pour les exécutions suivantes. Si une requête gaspille > 50 % de la mémoire qui lui est allouée, réduisez la taille de l’octroi de mémoire pour les exécutions consécutives.
Commentaires sur l’octroi de mémoire (percentile) Aucune Oui, à partir de SQL Server 2022 (16.x)) avec le niveau de compatibilité de la base de données 140 Traite les limitations existantes des commentaires d’octroi de mémoire de manière non intrusive en incorporant l’exécution passée des requêtes pour affiner les commentaires.
Persistance des commentaires d’octroi de mémoire, CE et DOP Aucune Oui, à partir de SQL Server 2022 (16.x)) avec le niveau de compatibilité de la base de données 140 Fournit de nouvelles fonctionnalités pour conserver les commentaires d’octroi de mémoire. Les commentaires CE et DOP sont toujours conservés. Nécessite que Magasin des requêtes soient activés pour la base de données et en mode READ_WRITE.
Forçage de plan optimisé Aucune Oui, à compter de SQL Server 2022 (16.x)). Réduit la surcharge de compilation pour les requêtes forcées répétées. Pour plus d’informations, consultez Forçage de plan optimisé avec Magasin des requêtes.
Incorporation (inlining) des fonctions UDF scalaires Oui, à partir du niveau de compatibilité de la base de données 150 Oui, à partir de SQL Server 2019 (15.x) avec le niveau de compatibilité de la base de données 150 Les fonctions UDF scalaires sont transformées en expressions relationnelles équivalentes qui sont incluses dans la requête appelante, ce qui entraîne souvent des gains de performances significatifs.
Optimisation du plan de sensibilité des paramètres Aucune Oui, (à partir de SQL Server 2022 (16.x)) avec le niveau de compatibilité de la base de données 160 L’optimisation du plan de sensibilité des paramètres répond au scénario où un plan mis en cache unique pour une requête paramétrable n’est pas optimal pour toutes les valeurs de paramètres entrantes possibles, par exemple les distributions de données non uniformes.
Compilation différée de variable de table Oui, à partir du niveau de compatibilité de la base de données 150 Oui, à partir de SQL Server 2019 (15.x) avec le niveau de compatibilité de la base de données 150 Utilise la cardinalité réelle de la variable de table rencontrée lors de la première compilation au lieu d’une estimation fixe.

Fonctionnalités IQP pour SQL Server 2019 (15.x)

Fonctionnalité IQP Pris en charge dans SQL Server 2019 (15.x) Description
Jointures adaptatives (mode batch) Oui, à partir de SQL Server 2017 (14.x) avec le niveau de compatibilité de base de données 140 Les jointures adaptatives sélectionnent dynamiquement un type de jointure lors de l’exécution en fonction des lignes d’entrée réelles.
Nombre approximatif distinct Oui Fournit un comptage distinct (COUNT DISTINCT) approximatif pour les scénarios Big Data avec les avantages de performances élevées et d’une faible empreinte mémoire.
Mode Batch sur Rowstore Oui, à partir du niveau de compatibilité de la base de données 150 Fournit un mode batch pour les charges de travail DW relationnelles utilisant le processeur de manière intensive sans nécessiter d’index columnstore.
Exécution entrelacée Oui, à partir du niveau de compatibilité de la base de données 140 Utilise la cardinalité réelle de la fonction table à instructions multiples rencontrée à la première compilation, au lieu d’une estimation fixe.
Commentaires sur l’octroi de mémoire (mode Batch) Oui, à partir du niveau de compatibilité de la base de données 140 Si une requête en mode batch a des opérations débordant sur le disque, ajoutez de la mémoire pour les exécutions suivantes. Si une requête gaspille > 50 % de la mémoire qui lui est allouée, réduisez la taille de l’octroi de mémoire pour les exécutions consécutives.
Commentaires sur l’octroi de mémoire (mode Ligne) Oui, à partir du niveau de compatibilité de la base de données 150 Si une requête en mode ligne a des opérations débordant sur le disque, ajoutez de la mémoire pour les exécutions suivantes. Si une requête gaspille > 50 % de la mémoire qui lui est allouée, réduisez la taille de l’octroi de mémoire pour les exécutions consécutives.
Incorporation (inlining) des fonctions UDF scalaires Oui, à partir du niveau de compatibilité de la base de données 150 Les fonctions UDF scalaires sont transformées en expressions relationnelles équivalentes qui sont incluses dans la requête appelante, ce qui entraîne souvent des gains de performances significatifs.
Compilation différée de variable de table Oui, à partir du niveau de compatibilité de la base de données 150 Utilise la cardinalité réelle de la variable de table rencontrée à la première compilation, au lieu d’une estimation fixe.

Fonctionnalités IQP pour SQL Server 2017 (14.x)

Fonctionnalité IQP Pris en charge dans SQL Server 2017 (14.x) Description
Jointures adaptatives (mode batch) Oui, à partir de SQL Server 2017 (14.x) avec le niveau de compatibilité de base de données 140 Les jointures adaptatives sélectionnent dynamiquement un type de jointure lors de l’exécution en fonction des lignes d’entrée réelles.
Nombre approximatif distinct Oui Fournit un comptage distinct (COUNT DISTINCT) approximatif pour les scénarios Big Data avec les avantages de performances élevées et d’une faible empreinte mémoire.
Exécution entrelacée Oui, à partir du niveau de compatibilité de la base de données 140 Utilise la cardinalité réelle de la fonction table à instructions multiples rencontrée à la première compilation, au lieu d’une estimation fixe.
Commentaires sur l’octroi de mémoire (mode Batch) Oui, à partir du niveau de compatibilité de la base de données 140 Si une requête en mode batch a des opérations débordant sur le disque, ajoutez de la mémoire pour les exécutions suivantes. Si une requête gaspille > 50 % de la mémoire qui lui est allouée, réduisez la taille de l’octroi de mémoire pour les exécutions consécutives.

Magasin des requêtes condition requise

Plusieurs des fonctionnalités de traitement intelligent des requêtes nécessitent l’activation de l’Magasin des requêtes pour bénéficier de la base de données utilisateur. Pour activer le Magasin des requêtes, consultez Activer le Magasin des requêtes.

Fonctionnalité IQP Nécessite Magasin des requêtes pour être activé et READ_WRITE
Jointures adaptatives (mode batch) Non
Nombre approximatif distinct Non
Centile approximatif Non
Mode Batch sur Rowstore Non
Commentaires sur l’estimation de la cardinalité (CE) Oui
Commentaires sur les degrés de parallélisme (DOP) Oui
Exécution entrelacée Non
Commentaires sur l’octroi de mémoire (mode Batch) Partiellement
Commentaires sur l’octroi de mémoire (mode Ligne) Partiellement
Commentaires sur l’octroi de mémoire (percentile) Oui
Persistance des commentaires d’octroi de mémoire, CE et DOP Non
Forçage de plan optimisé Oui
Incorporation (inlining) des fonctions UDF scalaires Non
Optimisation du plan de sensibilité des paramètres Non, mais recommandé
Compilation différée de variable de table Non

Voir aussi

Pour plus d’informations sur toutes les fonctionnalités IQP, y compris les notes de publication et des descriptions plus détaillées, consultez Détails des fonctionnalités de traitement intelligent des requêtes (IQP).

Étapes suivantes