SET SET STATISTICS IO (Transact-SQL)

Применимо к:SQL ServerБаза данных SQL AzureУправляемый экземпляр SQL AzureБаза данных SQL в Microsoft Fabric

Позволяет SQL Server отображать сведения об объемах физического и логического ввода-вывода, связанного с выполнением инструкций Transact-SQL. Физический ввод-вывод связан с доступом к страницам данных на диске, а логический ввод-вывод связан с доступом к страницам данных в памяти (кэш данных).

Соглашения о синтаксисе Transact-SQL

Синтаксис

SET STATISTICS IO { ON | OFF }

Выходные данные

В следующей таблице перечислены и описаны элементы вывода.

Элемент вывода Значение
Table Имя таблицы.
Scan count Количество операций поиска или сканирования, запущенных после достижения конечного уровня в любом направлении с целью получения всех значений при построении окончательного набора данных для вывода.

Число просмотров равно 0, если используется уникальный или кластеризованный индекс первичного ключа и происходит поиск только одного значения. Например, WHERE Primary_Key_Column = <value>.
Число просмотров равно 1, если при поиске одного значения используется неуникальный кластеризованный индекс, который определен в столбце непервичного ключа. Это позволяет проводить проверку на наличие повторяющихся значений ключа, который вы ищете. Например, WHERE Clustered_Index_Key_Column = <value>.
Число сканирования — N, если N — это количество различных поисков или сканирования, запущенных влево или правой стороне на конечном уровне после поиска значения ключа с помощью ключа индекса.
logical reads Число страниц, считанных из кэша данных.
physical reads Число страниц, считанных с диска.
page server reads Количество страниц, считываемых с серверов страниц. **
read-ahead reads Количество страниц, помещенных в кэш запросом, с помощью предварительного чтения.
page server read-ahead reads Количество страниц, считываемых с серверов страниц и помещенных в кэш данных запросом, с помощью предварительного чтения. **
lob logical reads Количество страниц БИЗНЕС-объектов, считываемых из кэша данных.
lob physical reads Количество страниц бизнес-аналитики, считываемых с диска.
lob page server reads Количество бизнес-страниц, считываемых с серверов страниц. **
lob read-ahead reads Количество страниц LOB*, помещенных в кэш данных запросом, с помощью предварительного чтения.
lob page server read-ahead reads Количество страниц LOB* считывается с серверов страниц и помещается в кэш данных запросом с помощью предварительного чтения. **

* Типы данных больших двоичных объектов (LOB) включают текст, ntext, image, varchar(max), nvarchar(max), varbinary(max)или страницы индекса columnstore.

** Ненулевое значение только для База данных SQL Azure гипермасштабирования.

Вывод чтения версии

Область применения: База данных SQL Azure и база данных SQL в Microsoft Fabric

Если оператор читает более ранние версии строк из хранилища версий, вывод ввода/вывода сопровождается одной строкой для каждого объекта, у которого есть хотя бы одна прочитанная версия. Чтение версии происходит каждый раз, когда ядро СУБД проверяет более раннюю версию строки в цепочке версий, чтобы найти видимую версию для оператора. Для получения дополнительной информации см. метрики чтения версий.

Элемент вывода Значение
Object Название таблицы или индексированного представления, соответствующее схеме.
Tempdb versions read Количество строковых версий, прочитанных из хранилища версий в tempdb.
In-row PVS versions read Количество версий строк, читаемых из хранилища перманентных версий (PVS), хранящихся в строке данных.
Off-row PVS versions read Количество версий строк считывается из внутренней таблицы PVS вне строки.
Online index PVS versions read Количество версий строк, считываемых из внутренней таблицы PVS, используемой во время выполнения онлайн-операции индекса.

Чтение версий — это количество версий строк, а не количество страниц.

Замечания

При STATISTICS IO использовании on отображается статистическая информация и при отключении информации не отображается.

Если этот параметр имеет значение ON, будут возвращаться статистические сведения обо всех инструкциях Transact-SQL, пока значение параметра не изменится на OFF.

Параметр SET STATISTICS IO задан во время выполнения или выполнения, а не во время синтаксического анализа.

Примечание.

При получении столбцов больших объектов (LOB) инструкциями языка Transact-SQL для некоторых операций получения может потребоваться многократный обход дерева LOB. Это может привести к SETSET STATISTICS IO появлению более высоких логических показателей, чем ожидалось.

Разрешения

Чтобы использовать SET STATISTICS IO, пользователи должны иметь соответствующие разрешения для выполнения инструкции Transact-SQL. Разрешение SHOWPLAN не требуется.

Примеры

В этом примере показано, сколько логических и физических операций чтения используется SQL Server при обработке инструкций.

Примечание.

В База данных SQL Azure и SQL Database в Microsoft Fabric этот USE оператор недоступен. Вместо этого подключайтесь напрямую к заданной базе данных и запускайте остальную часть кода.

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

Ниже приведены выходные данные сообщения:

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.

В База данных SQL Azure и SQL Database в Microsoft Fabric, если оператор читает версии строк, вывод также включает строку чтения версии для каждого объекта с считыванием версий. Например, следующая строка показывает, что оператор читал 1 000 версий строк из внутренней таблицы PVS вне строки во время чтения таблицы 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.