SQL Server Machine Learning Services の拡張イベントで PREDICT T-SQL ステートメントを監視する

適用対象: SQL Server 2017 (14.x) 以降 Azure SQL Managed Instance

拡張イベントを使用して、SQL Server Machine Learning Services で PREDICT T-SQL ステートメントを監視およびトラブルシューティングする方法について説明します。

拡張イベントの表

次の拡張イベントは、PREDICT T-SQL ステートメントをサポートするすべてのバージョンの SQL Server で使用できます。

name object_type description
predict_function_completed event 組み込み実行時間のブレークダウン
predict_model_cache_hit event モデルが PREDICT 関数モデル キャッシュから取得されるときに発生します。 PREDICT 関数モデル キャッシュが原因で発生した問題についてトラブルシューティングを行うには、このイベントを他の predict_model_cache_* イベントと共に使用します。
predict_model_cache_insert event モデルが PREDICT 関数モデル キャッシュに挿入されるときに発生します。 PREDICT 関数モデル キャッシュが原因で発生した問題についてトラブルシューティングを行うには、このイベントを他の predict_model_cache_* イベントと共に使用します。
predict_model_cache_miss event モデルが PREDICT 関数モデル キャッシュで見つからないときに発生します。 このイベントが頻繁に発生する場合、SQL Server がより多くのメモリを必要としていることを示している可能性があります。 PREDICT 関数モデル キャッシュが原因で発生した問題についてトラブルシューティングを行うには、このイベントを他の predict_model_cache_* イベントと共に使用します。
predict_model_cache_remove event モデルが PREDICT 関数のモデル キャッシュから削除されるときに発生します。 PREDICT 関数モデル キャッシュが原因で発生した問題についてトラブルシューティングを行うには、このイベントを他の predict_model_cache_* イベントと共に使用します。

これらのイベントに対して返されたすべての列の一覧を表示するには、SQL Server Management Studio で次のクエリを実行します。

SELECT *
FROM sys.dm_xe_object_columns
WHERE object_name LIKE 'predict%'

PREDICT を使用してスコアリング セッションのパフォーマンスに関する情報を取得するには次の手順を実行します。

  1. Management Studio またはサポートされている別のツールを使用して、新しい拡張イベント セッションを作成します。
  2. イベント predict_function_completedpredict_model_cache_hit をセッションに追加します。
  3. 拡張イベント セッションを開始します。
  4. PREDICT を使用するクエリを実行します。

結果で次の列を確認します。

  • predict_function_completed の値は、モデルの読み込みとスコアリングのためにクエリが費やした時間を示します。
  • predict_model_cache_hit のブール値は、クエリがキャッシュされたモデルを使用したかどうかを示します。

ネイティブ スコアリング モデル キャッシュ

PREDICT 固有のイベントに加えて、次のクエリを使用して、キャッシュされたモデルとキャッシュの使用に関する詳細情報を取得できます。

ネイティブ スコアリング モデル キャッシュの表示:

SELECT *
FROM sys.dm_os_memory_clerks
WHERE type = 'CACHESTORE_NATIVESCORING';

モデル キャッシュ内のオブジェクトの表示:

SELECT *
FROM sys.dm_os_memory_objects
WHERE TYPE = 'MEMOBJ_NATIVESCORING';

次の手順

拡張イベント (XEvent と呼ばれることもあります) の詳細と、セッションのイベントを追跡する方法の詳細については、次の記事を参照してください。