Référence des opérateurs physiques et logiques
Les opérateurs décrivent comment SQL Server exécute une requête ou une instruction DML (Data Manipulation Language). L'optimiseur de requête utilise des opérateurs pour construire un plan de requête qui crée le résultat spécifié dans la requête ou pour exécuter l'opération spécifiée dans l'instruction DML. Le plan de requête est une arborescence composée d'opérateurs physiques.
Les opérateurs sont classés en opérateurs logiques et physiques. Les opérateurs logiques décrivent une opération de traitement relationnel de la requête à un niveau conceptuel. Les opérateurs physiques mettent véritablement en œuvre l'opération définie par un opérateur logique, à l'aide d'une méthode ou d'un algorithme concret. Par exemple, « join » est une opération logique, tandis que « nested loops joins » est un opérateur physique.
Opérateurs logiques
Les opérateurs logiques décrivent l'opération algébrique relationnelle utilisée pour traiter une instruction. En d'autres termes, les opérateurs logiques décrivent de manière conceptuelle les opérations à exécuter.Opérateurs physiques
Les opérateurs physiques mettent en œuvre l'opération décrite par des opérateurs logiques. Chacun des opérateurs physiques désigne un objet ou une routine chargée d'effectuer une opération. Par exemple, certains opérateurs physiques permettent d'accéder à des colonnes ou des lignes à partir d'une table, d'un index ou d'une vue. D'autres effectuent d'autres types d'opérations : l'opérateur Aggregate calcule une expression contenant les fonctions MIN, MAX, SUM, COUNT ou AVG ; l'opérateur Merge Join permet de réaliser quatres types différents d'opérations de jointure logiques.Les opérateurs physiques s'initialisent, recueillent les données et se ferment. En particulier, l'opérateur physique peut répondre aux trois méthodes d'appel suivantes :
Init() : avec la méthode Init(), l'opérateur physique s'initialise et configure les structures de données nécessaires. Il arrive que l'opérateur physique reçoive beaucoup d'appels Init(), bien qu'en général il n'en reçoive qu'un.
GetNext() : Avec la méthode GetNext(), l'opérateur physique récupère la première ligne de données ou la suivante. L'opérateur physique peut recevoir zéro ou de nombreux appels GetNext().
Close() : avec la méthode Close(), l'opérateur physique effectue certaines opérations de nettoyage et se ferme. Un opérateur physique reçoit un seul appel Close().
La méthode GetNext() renvoie une ligne de données, et le nombre d'appels qu'elle reçoit s'affiche sous ActualRows dans le résultat Showplan produit au moyen de SET STATISTICS PROFILE ON ou SET STATISTICS XML ON. Pour plus d'informations sur ces options SET, consultez SET STATISTICS PROFILE (Transact-SQL) et SET STATISTICS XML (Transact-SQL).
Les compteurs ActualRebinds et ActualRewinds qui s'affichent dans le résultat de Showplan indiquent le nombre de fois que la méthode Init() est appelée. Sauf si un opérateur se trouve sur le côté intérieur d'une jointure de boucles, ActualRebinds est égal à un et ActualRewinds est égal à zéro. Si un opérateur se trouve sur le côté intérieur d'une jointure de boucles, le nombre total de reliaisons et de rembobinages doit être égal au nombre de ligne traitées sur le côté extérieur de la jointure. Une reliaison signifie qu'un ou plusieurs des paramètres corrélés de la jointure ont changé, et que le côté intérieur doit être réévalué. Un rembobinage signifie qu'aucun des paramètres corrélés n'a changé, et que l'ancien jeu de résultats interne peut être réutilisé.
ActualRebinds et ActualRewinds sont présents dans le résultat de Showplan XML produit en utilisant SET STATISTICS XML ON. Ils ne sont remplis que pour les opérateurs Nonclustered Index Spool, Remote Query, Row Count Spool, Sort, Table Spool et Table-valued Function. ActualRebinds et ActualRewinds peuvent aussi être remplis pour les opérateurs Assert et Filter lorsque l'attribut StartupExpression est défini à TRUE.
Lorsque ActualRebinds et ActualRewinds sont présents dans un Showplan XML, ils sont comparables à EstimateRebinds et EstimateRewinds. S'ils sont absents, le nombre estimé de lignes (EstimateRows) est comparable au nombre réel de lignes (ActualRows). Sachez que le résultat du Showplan graphique réel affiche des zéros pour les reliaisons réelles et les rembobinages réels lorsqu'ils sont absents. Pour plus d'informations sur les Showplans graphiques, consultez Affichage de plans d'exécution graphique (SQL Server Management Studio).
Un compteur apparenté, ActualEndOfScans, est disponible uniquement si le résultat de Showplan est produit au moyen de SET STATISTICS XML ON. Chaque fois qu'un opérateur physique atteint la fin de son flux de données, le compteur est incrémenté de un. Un opérateur physique peut atteindre la fin de son flux de données zéro, une ou de nombreuses fois. Comme pour les reliaisons et les rembobinages, le nombre de fins d'analyses ne peut être supérieur à un que si l'opérateur se situe sur le côté intérieur d'une jointure de boucles. Le nombre de fins d'analyses doit être inférieur ou égal au nombre total des reliaisons et des rembobinages.
Les opérateurs physiques correspondent aux algorithmes d'exécution. Index scan/seek, nested loop join, merge join, hash join/aggregation et stream aggregation sont des exemples d'opérateurs physiques. Les opérateurs physiques sont associés à des coûts. Chaque étape de l'exécution d'une requête ou d'une instruction DML implique un opérateur physique.
Mappage d'opérateurs physiques et logiques
L'optimiseur de requête crée un plan de requête sous forme d'arborescence d'opérateurs logiques. Après avoir créé le plan, l'optimiseur de requête choisit l'opérateur physique le plus efficace pour chaque opérateur logique. L'optimiseur de requête utilise une approche basée sur les coûts pour déterminer l'opérateur physique qui mettra en œuvre un opérateur logique.
Généralement, une opération logique peut être mise en œuvre par plusieurs opérateurs physiques. Toutefois, en de rares occasions, un opérateur physique peut également mettre en œuvre plusieurs opérations logiques.
Dans cette section
Cette section contient la description des opérateurs logiques et physiques suivants :
|