sys.dm_db_index_usage_stats (Transact-SQL)
Применимо: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure azure Synapse Analytics Analytics Platform System (PDW)
Возвращает количество различных операций с индексами и время, которое было затрачено на последнее выполнение операции каждого типа.
В База данных SQL Azure динамические административные представления не могут предоставлять сведения, влияющие на доступность базы данных или предоставление сведений о других базах данных, к которым пользователь имеет доступ. Чтобы избежать предоставления этой информации, отфильтровывается каждая строка, содержащая данные, которые не принадлежат подключену клиенту.
Примечание.
DmV sys.dm_db_index_usage_stats
не возвращает сведения о оптимизированных для памяти индексах или пространственных индексах. Сведения об использовании индексов, оптимизированных для памяти, см. в sys.dm_db_xtp_index_stats (Transact-SQL).
Примечание.
Чтобы вызвать это представление из Azure Synapse Analytics или Analytics Platform System (PDW), используйте sys.dm_pdw_nodes_db_index_usage_stats
. Этот синтаксис не поддерживается бессерверным пулом SQL в Azure Synapse Analytics.
Имя столбца | Тип данных | Description |
---|---|---|
database_id | smallint | Идентификатор базы данных, в которой определены таблица или представление. В База данных SQL Azure значения уникальны в одной базе данных или эластичном пуле, но не в логическом сервере. |
object_id | int | Идентификатор таблицы или представления, для которых определен индекс. |
index_id | int | Идентификатор индекса. |
user_seeks | bigint | Количество операций поиска по запросам пользователя. |
user_scans | bigint | Количество сканирований по запросам пользователей, которые не использовали предикат "поиск". |
user_lookups | bigint | Количество уточняющих запросов для запросов пользователей. |
user_updates | bigint | Количество операций обновления по запросам пользователя. К ним относятся вставка, удаление и обновления, представляющие количество операций, выполненных не на фактические строки. Например, если удалить 1000 строк в одной инструкции, это число увеличивается на 1 |
last_user_seek | datetime | Время последней операции поиска, выполненной пользователем. |
last_user_scan | datetime | Время последней операции просмотра, выполненной пользователем. |
last_user_lookup | datetime | Время последней операции поиска соответствия, выполненной пользователем. |
last_user_update | datetime | Время последней операции обновления, выполненной пользователем. |
system_seeks | bigint | Количество операций поиска по системным запросам. |
system_scans | bigint | Количество операций просмотра по системным запросам. |
system_lookups | bigint | Количество уточняющих запросов для системных запросов. |
system_updates | bigint | Количество операций обновления по системным запросам. |
last_system_seek | datetime | Время последней системной операции поиска. |
last_system_scan | datetime | Время последней системной операции просмотра. |
last_system_lookup | datetime | Время последнего системного уточняющего запроса. |
last_system_update | datetime | Время последней системной операции обновления. |
pdw_node_id | int | Область применения: Azure Synapse Analytics, Analytics Platform System (PDW) Идентификатор узла, на который находится данное распределение. |
Замечания
Каждая отдельная операция поиска, просмотра, уточняющего запроса или обновления на заданном индексе при выполнении одного запроса засчитывается как использование этого индекса и увеличивает на единицу соответствующий счетчик в данном представлении. Данные выводятся как для операций, вызванных пользовательскими запросами, так и для операций, вызванных внутренними запросами, например при выполнении операции просмотра для сбора статистики.
Столбец user_updates
— это счетчик обслуживания индекса, вызванный операциями вставки, обновления или удаления базовой таблицы или представления. С помощью этого представления можно определять, какие индексы используются приложениями лишь в незначительной степени. Можно также определять, какие индексы привносят дополнительную нагрузку, связанную с обслуживанием. Стоит рассмотреть возможность удаления индексов, вызывающих дополнительную нагрузку, связанную с их обслуживанием, но не использующихся для выполнения запросов или использующихся лишь иногда.
Счетчики инициализированы в пустое время при запуске ядра СУБД. Узнать время последнего запуска ядра СУБД можно в столбце sqlserver_start_time
из sys.dm_os_sys_info. Кроме того, когда база данных отсоединяется или останавливается (например, если аргументу AUTO_CLOSE присвоено значение ON), из представления удаляются все строки, связанные с этой базой данных.
При использовании индекса добавляется sys.dm_db_index_usage_stats
строка, если строка еще не существует для индекса. При добавлении строки ее счетчики вначале сбрасываются в нуль.
Во время обновления до SQL Server 2008 R2 (10.50.x), SQL Server 2012 (11.x) или SQL Server 2014 (12.x) удаляются записи sys.dm_db_index_usage_stats
. Начиная с SQL Server 2016 (13.x), записи сохраняются до SQL Server 2008 R2 (10.50.x).
Разрешения
На SQL Server и управляемом экземпляре SQL необходимо разрешение VIEW SERVER STATE
.
Для целей службы База данных SQL Basic, S0 и S1, а также для баз данных в эластичных пулах, учетной записи администратора сервера, учетной записи администратора Microsoft Entra или членства в ##MS_ServerStateReader##
роли сервера требуется. Для всех остальных целей обслуживания базы данных SQL требуется разрешение VIEW DATABASE STATE
в базе данных или членство в роли сервера ##MS_ServerStateReader##
.
Разрешения для SQL Server 2022 и более поздних версий
Требуется разрешение VIEW SERVER PERFORMANCE STATE на сервере.
См. также
Индексы, связанные с динамическими административными представлениями и функциями (Transact-SQL)
sys.dm_db_index_physical_stats (Transact-SQL)
sys.dm_db_index_operational_stats (Transact-SQL)
sys.indexes (Transact-SQL)
sys.objects (Transact-SQL)
sys.dm_os_sys_info (Transact-SQL)
Наблюдение и настройка производительности