インデックスの操作数と前回の実行日時に関する情報を出力するSQL Server動的管理ビューレファレンス(116)

「Microsoft SQL Server」が稼働するデータベースシステムを運用する管理者に向け、「動的管理ビュー」の活用を軸にしたトラブル対策のためのノウハウを紹介していきます。今回は、インデックスの操作数と前回の実行日時に関する情報を出力する方法について解説します。

» 2022年06月06日 05時00分 公開
[椎名武史@IT]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

SQL Server動的管理ビュー一覧

 本連載では、「Microsoft SQL Server(以下、SQL Server)」で使用可能な動的管理ビューについて、動作概要や出力内容などを紹介していきます。今回は動的管理ビュー「sys.dm_db_index_usage_stats」における、インデックスの操作数と前回の実行日時に関する情報を出力する方法について解説します。対応バージョンは、「SQL Server Analytics Platform System」にホストされている「SQL Server Parallel Data Warehouse」(PDW)、「Azure SQL Database」「Azure SQL Managed Instance」「Azure Synapse Analytics」(サポートされている全てのバージョン)です。

概要

 SQL Serverでは、テーブルやビューにインデックスを作成することで、効率的にデータ検索やテーブル間の結合を実行できます。データ検索やテーブル間の結合に適したインデックスが作成されていない場合には、データ検索のためにテーブルのデータ全体を読み込む必要があり、クエリの実行は非効率なものとなります。

 作成したインデックスが実際の運用で正常に使用されているかどうかは、各クエリで実行プランを確認して判断できます。また、インスタンス全体で大まかなインデックスの使用状況を確認することも、不要なインデックスの有無を確認することもできます。

 「sys.dm_db_index_usage_stats」では、インデックスの操作数と前回の実行日時に関する情報を出力します。

出力内容

列名 データ型 説明
database_id smallint データベースのID
object_id int オブジェクトID
index_id int インデックスのID
user_seeks bigint ユーザークエリによるシーク数
user_scans bigint ユーザークエリによるスキャン数
user_lookups bigint ユーザークエリによるブックマーク参照数
user_updates bigint ユーザークエリによる更新数
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 前回のシステム更新の日時

動作例

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。