sys.dm_db_index_usage_stats (Transact-SQL)
適用於: SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Analytics Platform System (PDW)
傳回不同類型的索引作業計數,以及上次執行每個作業類型的時間。
在 Azure SQL Database 中,動態管理檢視不可以公開可能會影響資料庫內含項目的資訊,或公開有關使用者可存取之其他資料庫的資訊。 為了避免公開此資訊,系統會篩選出包含不屬於連線租用戶之資料的每個資料列。
注意
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
。 Azure Synapse Analytics 的無伺服器 SQL 集區不支援此語法。
資料行名稱 | 資料類型 | 描述 |
---|---|---|
database_id | smallint | 定義數據表或檢視表的資料庫標識碼。 在 Azure SQL 資料庫中,這些值在單一資料庫或彈性集區內是唯一的,但在邏輯伺服器內則不是唯一的。 |
object_id | int | 定義索引的數據表或檢視表標識碼 |
index_id | int | 索引的識別碼。 |
user_seeks | bigint | 用戶查詢的搜尋數目。 |
user_scans | bigint | 未使用 'seek' 述詞的使用者查詢掃描數目。 |
user_lookups | bigint | 用戶查詢的書籤查閱數目。 |
user_updates | bigint | 用戶查詢的更新數目。 這包括 Insert、Delete 和 Updates,代表未完成實際數據列的作業數目。 例如,如果您在一個語句中刪除 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
行是基礎表或檢視表上插入、更新或刪除作業所造成的索引維護計數器。 您可以使用此檢視來判斷應用程式只會輕使用哪些索引。 您也可以使用 檢視來判斷哪些索引會產生維護額外負荷。 您可能想要考慮卸除會產生維護額外負荷的索引,但不會用於查詢,或只不常用於查詢。
每當啟動資料庫引擎時,計數器就會初始化為空白。 使用 sys.dm_os_sys_info 中的 sqlserver_start_time
資料行,來尋找最近一次資料庫引擎啟動時間。 此外,每當卸離或關閉資料庫時(例如,因為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 Database [Basic]、[S0] 和 [S1] 服務目標,以及彈性集區中的資料庫,需要伺服器管理員帳戶、伺服器管理員帳戶、Microsoft Entra 管理員帳戶或 ##MS_ServerStateReader##
伺服器角色的成員資格。 在所有其他 SQL Database 服務目標上,需要資料庫的 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)
效能的監視與微調