次の方法で共有


レポートを使用したパフォーマンスの分析

更新 : 2006 年 7 月 17 日

Microsoft SQL Server Notification Services のパフォーマンスを分析するときは、インスタンスとそのアプリケーションの実行方法を調べることから着手します。この情報を取得するには、アプリケーション スナップショットと管理レポートを使用します。

  • アプリケーション スナップショット レポートNSSnapshotApplications (Transact-SQL) ストアド プロシージャが生成します。たとえば、このレポートを使用して、ジェネレータの実行がスケジュールより遅れているかどうか、データが無効データ削除処理により削除されているかどうかなどを確認できます。
  • 管理レポートNSAdministrationHistory (Transact-SQL) ストアド プロシージャが生成します。たとえば、このレポートを使用して、失敗した通知バッチを検索できます。

これらのレポートは、アプリケーションが想定どおりに実行されているかどうかを判断するのに役立ちます。想定どおりに実行されていない場合は、以下の方法を使用して、パフォーマンスが低下している原因を分析します。

パフォーマンスの問題点の分析

Notification Services アプリケーションの分析は、ジェネレータ クォンタムから始めます。ジェネレータは Notification Services の中核部分であり、インスタンスが実行されているときは、クォンタムと呼ばれる一定の時間間隔に従って起動する必要があります。クォンタム期間は、アプリケーション定義ファイル (ADF) で指定します。ジェネレータはクォンタム期間を使用して、ADF で定義されたルールを実行する頻度を決定します。

パフォーマンスの問題を分析するときは、予定どおりに完了しなかったクォンタム期間を検索して、そのクォンタムで発生した問題を調査するのが一般的です。以下の方法を使用して、分析するクォンタムに移動し、そのクォンタムの詳細を取得し、インスタンスとアプリケーションの詳細を分析します。

クォンタムの間隔の詳細については、「サブスクリプション処理アーキテクチャ」および「ジェネレータ クォンタム期間の指定」を参照してください。

手順 1 : 対象のクォンタムの決定

Notification Services アプリケーション分析の最初の手順は、問題に関連するクォンタム期間のセットを識別することです。パフォーマンスの低下に関連するクォンタム期間には、通常以下のいずれかの特性があります。

  • クォンタムが予定よりも長時間実行されています。これにはいくつかの要因があるので、原因を突き止めるためにアプリケーションの分析をさらに進める必要があります。
  • クォンタムが失敗としてマークされています。クォンタム期間は、ルールが計画どおりに実行されなかったなど、いくつかの原因により失敗する可能性があります。
  • クォンタムがスキップされました。ジェネレータが現在のデータを処理し続けるようにするために、クォンタム期間を必要に応じてスキップするようにジェネレータを構成できます。クォンタムのスキップは、通常クォンタム期間が長時間実行された場合の副作用として発生します。

Notification Services は、長時間実行されているクォンタム期間、失敗したクォンタム期間、またはスキップされたクォンタム期間を識別できるように、クォンタムのパフォーマンス、クォンタムの実行時間、失敗したクォンタム、およびスキップされたクォンタムのレポートを提供します。

  • クォンタム パフォーマンス レポートは、クォンタムの実行時間によってクォンタムを分類します。これをクォンタムの一般的な実行時間を判断するのに役立てることができます。NSQuantumPerformance (Transact-SQL) ストアド プロシージャによって、このレポートが作成されます。
  • クォンタム実行時間レポートは、指定した時間よりも長く実行されているクォンタムを示します。クォンタム ID を使用することにより、そのクォンタムを詳細に分析できます。NSQuantumExecutionTime (Transact-SQL) ストアド プロシージャによって、このレポートが作成されます。
  • クォンタム エラー レポートは、失敗したジェネレータ クォンタムに関する情報を提供します。クォンタムはルールの実行など、必要な処理を完了できなかった場合に失敗します。NSQuantumFailures (Transact-SQL) ストアド プロシージャによって、このレポートが作成されます。
  • スキップされたクォンタム レポートは、スキップされたジェネレータ クォンタムについての情報を提供します。ジェネレータが遅れ、クォンタムの制限値が ADF で設定されていると、クォンタムがスキップされる場合があります。NSQuantumsSkipped (Transact-SQL) ストアド プロシージャによって、このレポートが作成されます。

シナリオ :NSQuantumPerformance ストアド プロシージャを使用することにより、クォンタム 188 が他のすべてのクォンタムの 2 倍の時間実行されたことを判断できます。次の手順で、クォンタム中に発生した問題を発見します。

手順 2 : 詳細なクォンタム情報の分析

対象のクォンタムを識別した後で、そのクォンタムの間に何が発生したかを調べます。クォンタムの詳細情報を入手するには、クォンタム詳細レポートとクォンタム一覧レポートを使用します。

  • クォンタム詳細レポートは、指定したクォンタムに関する詳細情報を提供します。このレポートを使用して、長時間実行されているクォンタムのトラブルシューティングとクォンタム処理の分析を行います。NSQuantumDetails (Transact-SQL) ストアド プロシージャによって、このレポートが作成されます。
  • クォンタム一覧レポートは、指定した時間間隔で処理するクォンタムに関する情報を提供して、実行した順番にクォンタムを表示します。NSQuantumList (Transact-SQL) ストアド プロシージャによって、このレポートが作成されます。

シナリオ : 前の手順 1. で説明した事例に続いて、クォンタム 188 に対し NSQuantumDetails ストアド プロシージャを実行します。ルールの実行の 1 つがクォンタム期間の 90% を消費していることがレポートによってわかります。次の手順は、このクォンタムおよび他のクォンタムのイベント バッチおよび通知バッチを参照することです。このレポートを使用することにより、このクォンタム中にイベント バッチ 60 および通知バッチ 40 が処理されたことがわかります。

手順 3 : 詳細なアプリケーション データの分析

クォンタム期間の分析後は、クォンタム内の特定のイベント、サブスクリプション、または通知に注目します。イベント バッチ詳細レポート、定期的なサブスクリプション詳細レポート、および通知バッチ詳細レポートは、アプリケーション データに関する詳細な情報を提供します。

  • イベント バッチ詳細レポートは、イベント クラスの特定のイベント バッチに関する情報を提供します。このレポートはイベント バッチに関する要約情報と、バッチ内の各イベントに関する情報を示します。NSEventBatchDetails (Transact-SQL) ストアド プロシージャによって、このレポートが作成されます。イベント バッチ ID を取得するには、NSEventBatchList (Transact-SQL) ストアド プロシージャを使用します。
  • 定期的なサブスクリプション詳細レポートは、サブスクリプション クラスのすべてのサブスクリプションに関する情報を提供します。NSScheduledSubscriptionDetails (Transact-SQL) ストアド プロシージャによって、このレポートが作成されます。
  • 条件アクションを使用している場合は、条件ベースのサブスクリプションを評価するために使用されたクエリが、サブスクリプション条件情報レポートによって返されます。NSSubscriptionConditionInformation (Transact-SQL) ストアド プロシージャによって、このレポートが作成されます。
  • 通知バッチ詳細レポートは、通知クラスの特定の通知バッチに関する情報を提供します。レポートは通知バッチに関する要約情報と、バッチ内の各通知に関する情報を示します。NSNotificationBatchDetails (Transact-SQL) ストアド プロシージャによって、このレポートが作成されます。通知バッチ ID を取得するには、NSNotificationBatchList (Transact-SQL) ストアド プロシージャを使用します。
  • また、診断レポートスナップショットレポートを使用しても、アプリケーションの詳細をさまざまなレベルで参照できます。

シナリオ : クォンタム 188 の分析を結論付けるには、まずイベント バッチ 60 に対して NSEventBatchDetails ストアド プロシージャを実行して、このクォンタム中に多数のイベントが収集されていることを確認します。NSDiagnosticEventClass を使用して、このイベント バッチが大部分のイベント クラスよりもかなり多くのイベントを保持していると判断します。これは、クォンタム実行時間が通常より長くても、アプリケーションに問題はないことを示しています。ただし、パフォーマンスを向上させるためにクエリを最適化したり、インデックスを追加するなど、アプリケーションの最適化が必要な可能性があることを示しています。

参照

概念

Notification Services パフォーマンス レポート
Notification Services のパフォーマンスと利用状況の監視

ヘルプおよび情報

SQL Server 2005 の参考資料の入手