Traitement de requêtes intelligent dans les bases de données SQL
S’applique à : SQL Server Azure SQL Database Azure SQL Managed Instance Base de données SQL dans Microsoft Fabric
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 quand elle a été introduite pour SQL Server. Toutes les fonctionnalités IQP sont disponibles dans Azure SQL Managed Instance et Azure SQL Database. Certaines fonctionnalités dépendent du niveau de compatibilité de la base de données.
Regardez cette vidéo pour obtenir un aperçu du traitement de requêtes intelligent :
Pour les démonstrations et l'exemple de code des fonctionnalités de traitement de requêtes intelligentes (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 = 160;
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, notamment les notes de publication et les descriptions plus détaillées, consultez les détails des fonctionnalités de traitement de requêtes intelligent (IQP).
Fonctionnalités IQP pour Azure SQL Database et SQL Server 2022 (16.x)
Fonctionnalité de traitement intelligent des requêtes | Prise en charge dans Azure SQL Database | Prise 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, à compter de SQL Server 2017 (14.x) avec le niveau de compatibilité de la 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, à compter 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, à compter 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, à compter 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. |
Retour d'expérience sur l'estimation de la cardinalité (CE) | Oui, à partir du niveau de compatibilité de la base de données 160 | Oui, à compter 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 pour lesquelles les hypothèses CE inefficaces entraînent des performances de requête médiocres. 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 le degré de parallélisme (DOP) | Oui, en préversion, à partir du niveau de compatibilité de la base de données 160 | Oui, à compter 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 pour lesquelles un parallélisme inefficace peut entraîner des problèmes de performances. Cela demande l'activation du Magasin des requêtes. |
Exécution entrelacée | Oui, à partir du niveau de compatibilité de la base de données 140 | Oui, à compter de SQL Server 2017 (14.x) avec le 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 plutôt qu'une estimation fixe. |
Rétroaction d'allocation de mémoire (mode batch) | Oui, à partir du niveau de compatibilité de la base de données 140 | Oui, à compter de SQL Server 2017 (14.x) avec le 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 l'allocation de mémoire pour les exécutions suivantes. |
Rétroaction d'allocation de mémoire (mode ligne) | Oui, à partir du niveau de compatibilité de la base de données 150 | Oui, à compter 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 l'allocation de mémoire pour les exécutions suivantes. |
Rétroaction d'allocation de mémoire (centiles) | Oui, activé sur toutes les bases de données | Oui, à compter de SQL Server 2022 (16.x) avec le niveau de compatibilité de la base de données 140 | Résout les limitations existantes de la rétroaction d'allocation de mémoire d'une manière non intrusive en incorporant l'exécution des requêtes passées pour affiner les commentaires. |
Persistance de la rétroaction d'allocation de mémoire | Oui, activé sur toutes les bases de données | Oui, à compter 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 rétroactions d'allocation de mémoire. Nécessite que le Magasin des requêtes soit activé et en mode READ_WRITE. |
Persistance de la rétroaction CE | Oui, à partir du niveau de compatibilité de la base de données 160 | Oui, à compter de SQL Server 2022 (16.x) avec le niveau de compatibilité de la base de données 160 | Nécessite que le Magasin des requêtes soit activé et en mode READ_WRITE. |
Persistance de la rétroaction DOP | Oui, en préversion, à partir du niveau de compatibilité de la base de données 160 | Oui, à compter de SQL Server 2022 (16.x) avec le niveau de compatibilité de la base de données 160 | Nécessite que le Magasin des requêtes soit activé et en mode READ_WRITE. |
Forçage de plan optimisé | Oui | 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 le Magasin des requêtes. |
Incorporation (inlining) des fonctions UDF scalaires | Oui, à partir du niveau de compatibilité de la base de données 150 | Oui, à compter 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 | Oui, à partir du niveau de compatibilité de la base de données 160 | Oui, à compter 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 traite le scénario dans lequel un seul plan mis en cache pour une requête paramétrable n'est pas optimal pour toutes les valeurs de paramètre entrantes possibles, par exemple des 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, à compter 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 à la première compilation, au lieu d'une estimation fixe. |
Fonctionnalité IQP pour Azure SQL Managed Instance
Fonctionnalité de traitement intelligent des requêtes | Prise en charge dans Azure SQL Managed Instance | Description |
---|---|---|
Jointures adaptatives (mode batch) | Oui, à partir du niveau de compatibilité de la 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. |
Centile approximatif | Oui, à partir du niveau de compatibilité de la base de données 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 | Fournit un mode batch pour les charges de travail DW relationnelles utilisant le processeur de manière intensive sans nécessiter d’index columnstore. |
Retour d'expérience sur l'estimation de la cardinalité (CE) | Oui, à partir du niveau de compatibilité de la base de données 160 | Ajuste automatiquement les estimations de cardinalité pour les requêtes répétées afin d'optimiser les charges de travail pour lesquelles les hypothèses CE inefficaces entraînent des performances de requête médiocres. 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 le degré de parallélisme (DOP) | Aucune | Ajuste automatiquement le degré de parallélisme pour les requêtes répétées afin d'optimiser les charges de travail pour lesquelles un parallélisme inefficace peut entraîner des problèmes de performances. Cela demande l'activation du Magasin des requêtes. |
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 plutôt qu'une estimation fixe. |
Rétroaction d'allocation 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 l'allocation de mémoire pour les exécutions suivantes. |
Rétroaction d'allocation 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 l'allocation de mémoire pour les exécutions suivantes. |
Rétroaction d'allocation de mémoire (centiles) | Aucune | Résout les limitations existantes de la rétroaction d'allocation de mémoire d'une manière non intrusive en incorporant l'exécution des requêtes passées pour affiner les commentaires. |
Persistance des rétroactions d'allocation de mémoire, CE et DOP | Oui, à partir du niveau de compatibilité de la base de données 160 | Fournit de nouvelles fonctionnalités pour conserver les rétroactions d'allocation de mémoire. Les rétroactions CE et DOP sont toujours conservées. Nécessite que le Magasin des requêtes soit activé et en mode READ_WRITE. |
Forçage de plan optimisé | Aucune | 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 le Magasin des requêtes. |
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. |
Optimisation du plan de sensibilité des paramètres | Oui, à partir du niveau de compatibilité de la base de données 160 | L'optimisation du plan de sensibilité des paramètres traite le scénario dans lequel un seul plan mis en cache pour une requête paramétrable n'est pas optimal pour toutes les valeurs de paramètre entrantes possibles, par exemple des 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 | 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 2019 (15.x)
Fonctionnalité de traitement intelligent des requêtes | Prise en charge dans SQL Server 2019 (15.x) | Description |
---|---|---|
Jointures adaptatives (mode batch) | Oui, à compter de SQL Server 2017 (14.x) avec le niveau de compatibilité de la 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. |
Rétroaction d'allocation 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 l'allocation de mémoire pour les exécutions suivantes. |
Rétroaction d'allocation 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 l'allocation de mémoire pour les exécutions suivantes. |
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é de traitement intelligent des requêtes | Prise en charge dans SQL Server 2017 (14.x) | Description |
---|---|---|
Jointures adaptatives (mode batch) | Oui, à compter de SQL Server 2017 (14.x) avec le niveau de compatibilité de la 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. |
Rétroaction d'allocation 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 l'allocation de mémoire pour les exécutions suivantes. |
Exigences du Magasin des requêtes
Plusieurs des fonctions de traitement des requêtes intelligent nécessitent l'activation du magasin de requêtes pour bénéficier à la base de données de l'utilisateur. Si vous devez activer le Magasin de requêtes, consultez Activer le Magasin des requêtes.
Fonctionnalité de traitement intelligent des requêtes | Nécessite que le Magasin des requêtes soit activé et en mode READ_WRITE |
---|---|
Jointures adaptatives (mode batch) | Non |
Nombre approximatif distinct | Non |
Centile approximatif | Non |
Mode Batch sur Rowstore | Non |
Retour d'expérience sur l'estimation de la cardinalité (CE) | Oui |
Commentaires sur le degré de parallélisme (DOP) | Oui |
Exécution entrelacée | Non |
Rétroaction d'allocation de mémoire (mode batch) | Non |
Rétroaction d'allocation de mémoire (mode ligne) | Non |
Rétroaction d'allocation de mémoire (modes centile et persistance) | Oui |
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 |
Contenu connexe
Pour plus d'informations sur toutes les fonctionnalités IQP, notamment les notes de publication et les descriptions plus détaillées, consultez les détails des fonctionnalités de traitement de requêtes intelligent (IQP).
- Jointures (SQL Server)
- Modes d'exécution
- Guide d’architecture de traitement des requêtes
- Guide de référence des opérateurs Showplan logiques et physiques
- Nouveautés de SQL Server 2017
- Nouveautés de la version SQL Server 2019
- Nouveautés de SQL Server 2022
- Rétroaction d'allocation de mémoire
- Illustration du traitement de requêtes intelligent
- Pliage de constantes et évaluation d’expression
- Démonstrations de traitement de requêtes intelligent sur GitHub
- Centre de performances pour le moteur de base de données SQL Server et Azure SQL Database
- Superviser le niveau de performance avec le Magasin des requêtes
- Meilleures pratiques pour la supervision des charges de travail avec le Magasin des requêtes