「Microsoft SQL Server」が稼働するデータベースシステムを運用する管理者に向け、「動的管理ビュー」の活用を軸にしたトラブル対策のためのノウハウを紹介していきます。今回は、キャッシュされた関数の実行統計に関する情報の出力について解説します。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
本連載では、「Microsoft SQL Server(以下、SQL Server)」で使用可能な動的管理ビューについて、動作概要や出力内容などを紹介していきます。今回は動的管理ビュー「sys.dm_exec_function_stats」における、キャッシュされた関数の実行統計に関する情報の出力について解説します。対応バージョンは、SQL Server 2016以降です。
SQL Serverはメモリの状況を確認しながら実行した関数の実行プランや実行統計をキャッシュしています。「sys.dm_exec_function_stats」を実行すると、キャッシュされた関数の実行統計に関する情報を出力します。
列名 | データ型 | 説明 |
---|---|---|
database_id | int | 関数が存在するデータベースID |
object_id | int | 関数のオブジェクトID |
type | char(2) | オブジェクトの種類 |
type_desc | nvarchar(60) | オブジェクトの種類の説明 |
sql_handle | varbinary(64) | クエリの識別子 |
plan_handle | varbinary(64) | プランの識別子 |
cached_time | datetime | 関数がキャッシュに追加された時刻 |
last_execution_time | datetime | 関数が最後に実行された時刻 |
execution_count | bigint | 関数が最後にコンパイルされてから実行された回数 |
total_worker_time | bigint | コンパイル後にこの関数の実行で消費されたマイクロ秒単位のCPU時間の合計 |
last_worker_time | bigint | 関数が最後に実行されたときに消費されたマイクロ秒単位のCPU時間の合計 |
min_worker_time | bigint | この関数が1回の実行で消費した最小のマイクロ秒単位のCPU時間の合計 |
max_worker_time | bigint | この関数が1回の実行で消費した最大のマイクロ秒単位のCPU時間の合計 |
total_physical_reads | bigint | コンパイル後にこの関数の実行で行われた物理読み取りの合計数 |
last_physical_reads | bigint | 関数が最後に実行されたときに実行された物理読み取りの数 |
min_physical_reads | bigint | この関数が1回の実行で行われた物理読み取りの最小数 |
max_physical_reads | bigint | この関数が1回の実行で行われた物理読み取りの最大数 |
total_logical_writes | bigint | コンパイル後にこの関数の実行によって実行された論理書き込みの合計数 |
last_logical_writes | bigint | 前回プランが実行されたときにダーティになったバッファープールページの数 |
min_logical_writes | bigint | この関数が1回の実行で行われた論理書き込みの最小数 |
max_logical_writes | bigint | この関数が1回の実行で行われた論理書き込みの最大数 |
total_logical_reads | bigint | コンパイル後にこの関数の実行で行われた論理読み取りの合計数 |
last_logical_reads | bigint | 関数が最後に実行されたときに実行された論理読み取りの数 |
min_logical_reads | bigint | この関数が1回の実行で行われた論理読み取りの最小数 |
max_logical_reads | bigint | この関数が1回の実行で行われた論理読み取りの最大数 |
total_elapsed_time | bigint | この関数の実行完了までのマイクロ秒単位の経過時間の合計 |
last_elapsed_time | bigint | 最後に完了したこの関数の実行のマイクロ秒単位の経過時間の合計 |
min_elapsed_time | bigint | この関数の実行完了までの最小のマイクロ秒単位の経過時間の合計 |
max_elapsed_time | bigint | この関数の実行完了までの最大のマイクロ秒単位の経過時間の合計 |
total_page_server_reads | bigint | コンパイル後にこの関数の実行によって実行されたページサーバの読み取りの合計数 |
last_page_server_reads | bigint | 関数が最後に実行されたときに実行されたページサーバの読み取り回数 |
min_page_server_reads | bigint | この関数が1回の実行で行われたページサーバの読み取りの最小数 |
max_page_server_reads | bigint | この関数が1回の実行で行われたページサーバの読み取りの最大数 |
インスタンス上で「sys.dm_exec_function_stats」を実行すると、キャッシュされた関数の実行統計に関する情報が出力されました(図1)。
「object_id」列からキャッシュされている関数名を特定することで、どの関数がどの程度のリソースを使用しているのかを後から確認できます。メモリに余裕があればある程度の期間の実行統計が保存されるため、CPUを多く使用している関数や最小と最大の差が大きい関数の調査など、安定稼働につながる情報をSQL Serverから確認できます。
※本Tipsは、「Windows Server 2019」上に「SQL Server 2019 RC1」をインストールした環境を想定して解説しています。
日本ユニシス株式会社所属。Microsoft MVP for Data Platform(2017〜)。入社以来 SQL Serverの評価/設計/構築/教育などに携わりながらも、主にサポート業務に従事。SQL Serverのトラブル対応で社長賞の表彰を受けた経験も持つ。休日は学生時代の仲間と市民駅伝に参加し、銭湯で汗を流してから飲み会へと流れる。
日本ユニシス株式会社所属。入社以来SQL Server一筋で評価/設計/構築/教育などに携わりながらも、主にサポート業務に従事。社内のプログラミングコンテストで4回の優勝経験も持つ。趣味は輪行で週末は自転車を持っての旅行。目標は色々な日本百選を制覇すること。
Copyright © ITmedia, Inc. All Rights Reserved.