Megosztás a következőn keresztül:


ÁLLÍTSON STATISZTIKÁKAT IO (Transact-SQL)

A következőkre vonatkozik:SQL ServerAzure SQL DatabaseFelügyelt Azure SQL-példánySQL-adatbázis a Microsoft Fabricben

Az SQL Server megjeleníti az Transact-SQL utasítások által generált fizikai és logikai IO aktivitásának mennyiségét. A fizikai IO a lemezen elérhető adatoldalakhoz kapcsolódik, a logikai IO pedig az adatlapok memóriában (adatgyorsítótárban) való hozzáféréshez.

Transact-SQL szintaxis konvenciók

Szemantika

SET STATISTICS IO { ON | OFF }

Kimenet

Az alábbi táblázat felsorolja és írja le a kimeneti elemeket.

Kimeneti elem Meaning
Table A tábla neve.
Scan count A keresések vagy szkennelések száma, amely a levélszint elérése után bármely irányban indult, hogy minden értéket visszanyerjenek a végső adathalmaz elkészítéséhez a kimenethez.

A szkennelési szám 0, ha az index egyedi vagy klaszterelt index egy elsődleges kulcson, és csak egy értéket keresel. Például: WHERE Primary_Key_Column = <value>.
A szkennelési szám 1, amikor egy értéket keresel egy nem egyedi, klaszterezett indexkel, amelyet egy nem elsődleges kulcsoszlopon definiálsz. Ez a folyamat azért történik, hogy ellenőrizze a keresett kulcsérték duplikált értékeit. Például: WHERE Clustered_Index_Key_Column = <value>.
A szkennelési szám N, amikor N az a különböző keresések vagy szkennelések száma, amelyeket a levél szintjén a bal vagy jobb oldal felé indítottak el, miután az index kulcs értéket találtunk.
logical reads Az adatgyorsítótárból olvasott oldalak száma.
physical reads A lemezről olvasott oldalak száma.
page server reads Oldalszerverek által olvasott oldalak száma. **
read-ahead reads A lekérdezés által a gyorsítótárba helyezett oldalak száma, előre olvasás segítségével.
page server read-ahead reads A lekérdezés által az előreolvasás által az adatgyorsaságba helyezett oldalak száma. **
lob logical reads Az adatgyorsítótárból olvasott LOB* oldalak száma.
lob physical reads A lemezről olvasott LOB* oldalak száma.
lob page server reads A LOB* oldalak száma, amelyeket az oldalszerverekről olvasnak. **
lob read-ahead reads A lekérdezés által az adatgyorsítótárba helyezett LOB* oldalak száma, előreolvasó segítségével.
lob page server read-ahead reads A LOB* oldalak száma, amelyeket az oldalszerverekről olvasnak, és a lekérdezés által az adatgyorsítótárba helyeznek, előre olvasáson keresztül. **

* A nagy objektum bináris (LOB) adattípusok közé tartoznak a szöveg, ntext, image, varchar(max), nvarchar(max),varbinary(max) vagy columnstore index oldalak.

** Non-zero csak Azure SQL Database Hyperscale esetén.

Megjegyzések

Amikor STATISTICS IO BEKAPCSOLVA, statisztikai információk jelennek meg, és KIKAPCSOLVA az információ nem jelenik meg.

Miután ezt az opciót beállították ON, minden Transact-SQL állítás visszaadja a statisztikai adatokat, amíg az opció OFF be nem állított.

A beállítás SET STATISTICS IO végrehajtási vagy futási időre van beállítva, nem parse időben.

Megjegyzés:

Amikor Transact-SQL utasítások LOB oszlopokat keresnek, egyes LOB lekérdezési műveletek többszöri áthaladást igényelhetnek a LOB fán. Ez arra vezethet, hogy a SET STATISTICS IO magasabb logikai olvasmányokat jelent a vártnál.

Permissions

A használathoz SET STATISTICS IOa felhasználóknak megfelelő jogosultságokkal kell rendelkezniük a Transact-SQL utasítás végrehajtásához. A SHOWPLAN engedély nem szükséges.

Példák

Ez a példa megmutatja, hány logikai és fizikai olvasást használ az SQL Server az utasítások feldolgozása során.

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

Íme az üzenetkimenet:

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.