要求ロギングは、アプリケーションから受け取った要求と、アプリケーションに送られた応答のログを個別に記録します。データベースサーバーがアプリケーションに何を要求されているかを特定したい場合に最も役立ちます。
特定のアプリケーションのパフォーマンスを分析するときに、データベースサーバーとクライアントのどちらに原因があるか不明な場合は、要求ロギングから始めることもおすすめします。要求ロギングは、問題の原因となっている可能性の高い、データベースサーバーに対する特定の要求を特定するためにも使用できます。
要求ロギング機能で提供されるすべての機能とデータは、診断トレーシングを使用した場合も利用できます。診断トレーシングでは、それ以外の機能やデータも提供されます。
ログに取られる情報には、タイムスタンプ、接続 ID、要求タイプなどがあります。クエリについては、独立性レベル、フェッチされたローの数、カーソルタイプもあります。INSERT 文、UPDATE 文、DELETE 文については、対象のロー数と実行されたトリガー数もあります。
要求ログには SQL 文の完全なテキストが含まれるので、GRANT CONNECT 文、CREATE DATABASE 文、CREATE EXTERNAL LOGIN 文などのパスワードを含む SQL 文の場合、これは機密情報になります。セキュリティが心配な場合は、要求ログファイルへのアクセスを制限してください。
-zr サーバーオプションを使用すると、データベースサーバーの起動時に要求ロギングをオンにできます。-zo サーバーオプションを使用すると、出力を要求ログファイルにリダイレクトして、さらに分析を進めることができます。-zn オプションと -zs オプションを使用すると、保存する要求ログファイルの数と要求ログファイルの最大サイズを指定できます。
これらのオプションの詳細については、次の項を参照してください。
サーバーオプションは、Sybase Central の診断トレーシングに影響しません。ファイルベースの要求ロギングは、Sybase Central の診断トレーシング機能とは完全に別個のものです。Sybase Central の診断トレーシング機能では、データベース内の dbo 所有の診断テーブルを使用して要求ログ情報が格納されます。
sa_get_request_times システムプロシージャーは、要求ログを読み込み、ログの文とその実行時間をグローバルテンポラリテーブル (satmp_request_time) に格納します。INSERT、UPDATE、DELETE の各文の場合は、記録される時間は、文が実行された時間です。クエリの場合、記録された時間は、PREPARE から DROP (DESCRIBE/OPEN/FETCH/CLOSE) までの合計所要時間です。したがって、オープンカーソルには注意する必要があります。
改善候補の文について satmp_request_time を分析します。低コストでも頻繁に実行される文が、パフォーマンスの問題を引き起こしている可能性があります。
sa_get_request_profile を使用して、sa_get_request_times と summarize satmp_request_time を satmp_request_profile という別のグローバルテンポラリテーブルに呼び出すことができます。また、このプロシージャーは、文をグループ化し、呼び出しの回数、実行時間などの情報を提供します。
Perl スクリプト tracetime.pl を使用してログを分析する場合は、要求ログがキャプチャーされる間、max_client_statements_cached オプションを 0 に設定してクライアント文のキャシュを無効にしておく必要があります。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |