SET SET STATISTICS IO (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceBase de données SQL dans Microsoft Fabric

Force SQL Server à afficher des informations sur la quantité d’activités E/S logiques et physiques générées par les instructions Transact-SQL. L’E/S physique est lié à l’accès aux pages de données sur le disque et à l’E/S logique est liée à l’accès aux pages de données en mémoire (cache de données).

Conventions de la syntaxe Transact-SQL

Syntaxe

SET STATISTICS IO { ON | OFF }

Sortie

Le tableau ci-dessous répertorie et décrit les éléments de sortie.

Élément de sortie Signification
Table Nom de la table.
Scan count Nombre de recherches ou d’analyses démarrées après avoir atteint le niveau feuille dans n’importe quelle direction afin de récupérer toutes les valeurs pour construire le dataset final de la sortie.

Le nombre d’analyses est 0 si l’index utilisé est un index unique ou un index cluster sur une clé principale et que vous recherchez une seule valeur. Par exemple : WHERE Primary_Key_Column = <value>.
Le nombre d’analyses est 1 quand vous recherchez une valeur à l’aide d’un index cluster non unique défini sur une colonne clé non primaire. Ce processus permet de rechercher les valeurs en double de la valeur de clé que vous recherchez. Par exemple : WHERE Clustered_Index_Key_Column = <value>.
Le nombre d’analyses est N lorsqu’il s’agit du nombre de recherches ou d’analyses différentes démarrées vers la gauche ou la droite au niveau feuille après avoir localisé une valeur de clé à l’aide de la clé d’index.
logical reads Nombre de pages lues à partir du cache de données.
physical reads Nombre de pages lues depuis le disque.
page server reads Nombre de pages lues à partir de serveurs de pages. **
read-ahead reads Nombre de pages placées dans le cache par la requête, via la lecture anticipée.
page server read-ahead reads Nombre de pages lues à partir de serveurs de pages et placées dans le cache de données par la requête, via la lecture anticipée. **
lob logical reads Nombre de pages LOB* lues à partir du cache de données.
lob physical reads Nombre de pages LOB* lues à partir du disque.
lob page server reads Nombre de pages métier* lues à partir de serveurs de pages. **
lob read-ahead reads Nombre de pages métier* placées dans le cache de données par la requête, via la lecture anticipée.
lob page server read-ahead reads Nombre de pages métier* lues à partir de serveurs de pages et placées dans le cache de données par la requête, via la lecture anticipée. **

* Les types de données binaires d’objets volumineux (LOB) incluent du texte, ntext, image, varchar(max), nvarchar(max), varbinary(max)ou des pages d’index columnstore.

** Non zéro pour Azure SQL Database Hyperscale uniquement.

Sortie de lecture de version

S’applique à : Azure SQL Database et base de données SQL dans Microsoft Fabric

Si une instruction lit les versions antérieures des lignes d’un magasin de versions, la sortie d’E/S est suivie d’une ligne pour chaque objet ayant au moins une version lue. Une version lue apparaît chaque fois que le Moteur de base de données examine une version antérieure d’une ligne dans une chaîne de versions pour trouver la version visible dans l’énoncé. Pour plus d’informations, voir Indicateurs de lecture de version.

Élément de sortie Signification
Object Nom qualifié par le schéma de la table ou de la vue indexée.
Tempdb versions read Nombre de versions de lignes lues depuis le stockage de versions dans tempdb.
In-row PVS versions read Nombre de versions de lignes lues depuis le stockage de versions persistant (PVS) stockées dans la ligne de données.
Off-row PVS versions read Nombre de versions de lignes lues à partir de la table interne PVS hors ligne.
Online index PVS versions read Nombre de versions de lignes lues à partir de la table interne PVS utilisée pendant qu’une opération d’indexation en ligne est en cours.

Les lectures de version sont des comptes de versions en lignes, pas des comptes de pages.

Notes

Lorsqu’il STATISTICS IO s’agit d’ON, les informations statistiques sont affichées, et quand off, les informations ne sont pas affichées.

Une fois l’option activée, toutes les instructions Transact-SQL retournent les informations statistiques jusqu’à ce que l’option soit désactivée.

Le paramètre est défini au moment de SET STATISTICS IO l’exécution ou de l’exécution et non au moment de l’analyse.

Remarque

Lorsque des instructions Transact-SQL extraient des colonnes LOB, certaines opérations d'extraction peuvent entraîner le parcours de l'arbre LOB à de multiples reprises. Cela peut entraîner SETSET STATISTICS IO des lectures logiques supérieures à celles attendues.

autorisations

Pour utiliser SET STATISTICS IO, les utilisateurs doivent disposer des autorisations appropriées pour exécuter l’instruction Transact-SQL. L’autorisation SHOWPLAN n’est pas nécessaire.

Exemples

L'exemple suivant illustre comment de nombreuses lectures logiques et physiques sont utilisées par SQL Server, durant le traitement d'instructions.

Remarque

Dans Azure SQL Database et SQL Database dans Microsoft Fabric, l'USEinstruction n'est pas disponible. À la place, connectez-vous directement à la base de données prévue et exécutez le reste de l’échantillon de code.

USE AdventureWorks2022;  
GO         
SET STATISTICS IO ON;  
GO  
SELECT *   
FROM Production.ProductCostHistory  
WHERE StandardCost < 500.00;  
GO  
SET STATISTICS IO OFF;  
GO  

Voici la sortie du message :

Table 'ProductCostHistory'. Scan count 1, logical reads 76, physical reads 0,
page server reads 0, read-ahead reads 0, page server read-ahead reads 0, 
lob logical reads 0, lob physical reads 0, lob page server reads 0, 
lob read-ahead reads 0, lob page server read-ahead reads 0.

Dans Azure SQL Database et SQL Database dans Microsoft Fabric, si l’instruction se lit en versions de ligne, la sortie inclut également une ligne de lecture de version pour chaque objet avec des versions lues. Par exemple, la ligne suivante montre que l’instruction lisait 1 000 versions de lignes à partir du tableau interne PVS hors ligne lors de la lecture du Production.ProductCostHistory tableau :

Object '[Production].[ProductCostHistory]'. Tempdb versions read 0, in-row PVS versions read 0,
off-row PVS versions read 1000, online index PVS versions read 0.