SET SET STATISTICS IO (Transact-SQL)

Gäller för:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceSQL-databas i Microsoft Fabric

Får SQL Server att visa information om mängden fysisk och logisk IO-aktivitet som genereras av Transact-SQL-satser. Fysisk IO är relaterat till att komma åt datasidor på disk och logisk IO är relaterat till att komma åt datasidor i minnet (datacache).

Transact-SQL syntaxkonventioner

Syntax

SET STATISTICS IO { ON | OFF }

Utgång

Följande tabell listar och beskriver utdata.

Utdata Meaning
Table Tabellens namn.
Scan count Antal sökningar eller skanningar som startades efter att ha nått bladnivån i någon riktning för att hämta alla värden och konstruera den slutliga datamängden för utdatan.

Scan-antalet är 0 om indexet som används är ett unikt index eller klustrat index på en primärnyckel och du söker bara ett värde. Till exempel WHERE Primary_Key_Column = <value>.
Scan-räkningen är 1 när du söker efter ett värde med ett icke-unikt klustrat index definierat på en kolumn utan primärnyckel. Denna process görs för att kontrollera dubbletter av nyckelvärdet du söker efter. Till exempel WHERE Clustered_Index_Key_Column = <value>.
Scancount är N när N är antalet olika sökningar eller skanningar som startas mot vänster eller höger sida på bladnivå efter att ett nyckelvärde har lokaliserats med indexnyckeln.
logical reads Antal sidor lästa från datacachen.
physical reads Antal sidor lästa från disk.
page server reads Antal sidor lästa från sidservrar. **
read-ahead reads Antal sidor placerade i cachen av frågan, via läs-framåt.
page server read-ahead reads Antal sidor lästa från sidservrar och placerade i datacachen av frågan, via läs-framåt. **
lob logical reads Antal LOB*-sidor som läses från datacachen.
lob physical reads Antal LOB*-sidor lästa från disken.
lob page server reads Antal LOB*-sidor lästa från sidservrar. **
lob read-ahead reads Antal LOB*-sidor placerade i datacachen av frågan, via läs-framåt.
lob page server read-ahead reads Antal LOB*-sidor lästa från sidservrar och placerade i datacachen av frågan, via läsningen framåt. **

* Stora objektbinärdata (LOB) datatyper inkluderar text, ntext, bild, varchar(max),nvarchar(max),varbinary(max) eller kolumnlagringsindexsidor.

** Icke-noll för endast Azure SQL Database Hyperscale.

Versionsläsning

Gäller för: Azure SQL Database och SQL Database i Microsoft Fabric

Om ett uttalande läser tidigare versioner av rader från en versionslagring följs I/O-utgången av en rad för varje objekt som har minst en version läst. En versionsläsning sker varje gång Database Engine undersöker en tidigare version av en rad i en versionskedja för att hitta den version som är synlig för satsen. För mer information, se Versionslästa mätvärden.

Utdata Meaning
Object Schema-kvalificerat namn på tabellen eller den indexerade vyn.
Tempdb versions read Antal radversioner som läses från versionslagret i tempdb.
In-row PVS versions read Antal radversioner som läses från persistent versionsmagasinet (PVS) och som lagras i dataraden.
Off-row PVS versions read Antal radversioner läses från den externa PVS-interna tabellen.
Online index PVS versions read Antal radversioner lästa från PVS interna tabell som används medan en online-indexoperation körs.

Versionsläsningar är antal radversioner, inte antal sidor.

Anmärkningar

När STATISTICS IO är PÅ visas statistisk information, och när den är AV visas inte informationen.

Efter att detta alternativ är satt PÅ returnerar alla Transact-SQL satser den statistiska informationen tills alternativet ställs till AV.

Inställningen av SET STATISTICS IO är satt vid exekverings- eller körtid och inte vid parsetid.

Anmärkning

När Transact-SQL satser hämtar LOB-kolumner kan vissa LOB-återvinningsoperationer kräva att man går igenom LOB-trädet flera gånger. Detta kan leda till SETSET STATISTICS IO högre än förväntade logiska läsningar.

Permissions

För att använda SET STATISTICS IO, måste användare ha lämpliga behörigheter för att köra Transact-SQL-satsen. SHOWPLAN-tillståndet krävs inte.

Examples

Detta exempel visar hur många logiska och fysiska läsningar som används av SQL Server när den bearbetar satserna.

Anmärkning

I Azure SQL Database och SQL-databas i Microsoft Fabric är satsen USE inte tillgänglig. Koppla istället direkt till den avsedda databasen och kör resten av kodprovet.

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

Här är meddelandeutgången:

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.

I Azure SQL Database och SQL-databas i Microsoft Fabric, om satsen läser radversioner, inkluderar utdata även en versionsläst rad för varje objekt med versionsläsningar. Till exempel visar följande rad att uttalandet läste 1 000 radversioner från den externa PVS-tabellen när tabellen lästes Production.ProductCostHistory :

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.