データベースサーバーが要求のタイミングの記録を有効にしたとき、すべての接続について要求のタイミング情報の概要を返します。
sa_performance_diagnostics( )
カラム名 | データ型 | 説明 |
---|---|---|
Number | INT |
接続の ID 番号を返します。 |
Name | VARCHAR(255) |
現在の接続の名前を返します。 ConnectionName (CON) 接続パラメーターを使用して接続名を指定できます。ConnectionName (CON) 接続パラメーターを参照してください。 データベースサーバーによって作成されるテンポラリ接続には次の名前が使用されます。
テンポラリ接続を参照してください。 |
Userid | VARCHAR(255) |
接続のユーザー ID を返します。 |
DBNumber | INT |
データベースの ID 番号を返します。 |
LoginTime | TIMESTAMP |
接続が確立された日付と時刻を返します。 |
TransactionStartTime | TIMESTAMP |
COMMIT または ROLLBACK の後にデータベースが最初に変更された時刻を含む文字列を返します。最後の COMMIT または ROLLBAK 以降にデータベースが変更されていない場合は、空の文字列を返します。 |
LastReqTime | TIMESTAMP |
指定された接続において最後の要求が開始された時刻を返します。このプロパティは、イベントなどの内部接続の場合は空の文字列を返すことがあります。 |
ReqType | VARCHAR(255) |
最後の要求のタイプを返します。接続が接続プールによってキャッシュされる場合、その ReqType 値は CONNECT_POOL_CACHE になります。 |
ReqStatus | VARCHAR(255) |
要求のステータスを返します。値は次のいずれかです。
アスタリスク (*) が付いている値が返されるのは、-zt サーバーオプションによってデータベースサーバーで要求タイミング情報のロギングがオンになっている場合に限られます。要求タイミング情報のロギングが実行されていない場合は (デフォルト)、値は Executing として返されます。 -zt dbeng12/dbsrv12 オプションを参照してください。 |
ReqTimeUnscheduled | DOUBLE |
未スケジュール時間を返します。-zt オプションが指定されていない場合は、NULL を返します。-zt dbeng12/dbsrv12 オプションを参照してください。 |
ReqTimeActive | DOUBLE |
要求の処理に要した時間を返します。-zt オプションが指定されていない場合は、NULL を返します。-zt dbeng12/dbsrv12 オプションを参照してください。 |
ReqTimeBlockIO | DOUBLE |
I/O 処理が完了するまでの待ち時間を返します。-zt オプションが指定されていない場合は、NULL を返します。-zt dbeng12/dbsrv12 オプションを参照してください。 |
ReqTimeBlockLock | DOUBLE |
ロックが解放されるまでの待ち時間を返します。-zt オプションが指定されていない場合は、NULL を返します。-zt dbeng12/dbsrv12 オプションを参照してください。 |
ReqTimeBlockContention | DOUBLE |
アトミックアクセスを取得するまでの待ち時間を返します。RequestTiming サーバープロパティが Off に設定されている場合は、NULL を返します。-zt dbeng12/dbsrv12 オプションを参照してください。 |
ReqCountUnscheduled | INT |
接続がスケジューリングを待った回数を返します。-zt オプションが指定されていない場合は、NULL を返します。-zt dbeng12/dbsrv12 オプションを参照してください。 |
ReqCountActive | INT |
処理が完了した要求の数を返します。RequestTiming サーバープロパティが Off に設定されている場合は、NULL を返します。-zt dbeng12/dbsrv12 オプションを参照してください。 |
ReqCountBlockIO | INT |
接続が I/O 処理の完了を待った回数を返します。-zt オプションが指定されていない場合は、NULL を返します。-zt dbeng12/dbsrv12 オプションを参照してください。 |
ReqCountBlockLock | INT |
接続がロックの解放を待った回数を返します。-zt オプションが指定されていない場合は、NULL を返します。-zt dbeng12/dbsrv12 オプションを参照してください。 |
ReqCountBlockContention | INT |
接続がアトミックアクセスを待った回数を返します。-zt オプションが指定されていない場合は、NULL を返します。-zt dbeng12/dbsrv12 オプションを参照してください。 |
LastIdle | INT |
要求間のチック数を返します。 |
BlockedOn | INT |
現在の接続がブロックされていない場合は 0 を返し、ブロックされている場合はロック競合によってブロックされた接続の接続番号を返します。 |
UncommitOp | INT |
コミットされていない操作の数を返します。 |
CurrentProcedure | VARCHAR(255) |
接続で現在実行されているプロシージャーの名前を返します。接続でネストされたプロシージャーコールが実行されている場合は、現在のプロシージャーの名前を返します。実行されているプロシージャーがない場合は、空の文字列を返します。 |
EventName | VARCHAR(255) |
接続でイベントハンドラーが実行されている場合、関連付けられているイベントの名前を返します。それ以外の場合は、空の文字列が返されます。 |
CurrentLineNumber | INT |
接続で実行されているプロシージャーまたは複合文の現在の行番号を返します。実行されているプロシージャーの名前は CurrentProcedure プロパティで取得できます。現在の行がクライアント側からの複合文の一部である場合は、空の文字列を返します。 |
LastStatement | LONG VARCHAR |
現在の接続で最後に準備された SQL 文を返します。 LastStatement の値は、文が準備されると同時に設定され、文が削除されると同時にクリアされます。各接続につき 1 つの文の文字列のみが記憶されます。 ある接続について sa_conn_activity が空でない値を返した場合、その接続で現在実行されている文である可能性が高くなります。その文が完了している場合は、文がすでに削除され、このプロパティの値がクリアされている可能性があります。アプリケーションが複数の文を準備し、それらの文のステートメントハンドルを保持している場合、LastStatement が返す値は接続で現在実行されている処理を表しません。 クライアントでの文のキャッシュが有効であり、キャッシュされた文が再使用されているとき、このプロパティは空の文字列を返します。 |
LastPlanText | LONG VARCHAR |
接続で最後に実行されたクエリの長いテキストプランを返します。最後のプランを記憶するかどうかは、sa_server_option システムプロシージャーの RememberLastPlan オプションを設定するか、-zp サーバーオプションを使用することで制御します。-zp dbeng12/dbsrv12 サーバーオプションを参照してください。 |
AppInfo | LONG VARCHAR |
接続を確立したクライアントに関する情報を返します。HTTP 接続では、ブラウザーの情報が含まれています。jConnect または Sybase Open Client の古いバージョンを使った接続については、情報は不完全の場合があります。 API 値は、DBLIB、ODBC、OLEDB、ADO.NET、iAnywhereJDBC、PHP、PerlDBD、DBEXPRESS のいずれかです。 その他のタイプの接続について返される値の詳細については、AppInfo (APP) 接続パラメーターを参照してください。 |
LockCount | INT |
接続で保持されているロックの数を返します。 |
SnapshotCount | INT |
接続に関連付けられているスナップショットの数を返します。 |
sa_performance_diagnostics システムプロシージャーは、要求のタイミングプロパティで構成される結果セットと統計情報 (統計情報を収集するようにサーバーに指示されている場合) を返します。要求のタイミング情報の記録は、sa_performance_diagnostics の呼び出し前にデータベースサーバーでオンにする必要があります。オンにするには、データベースサーバーの起動時に -zt オプションを指定するか、次の文を実行します。
CALL sa_server_option( 'RequestTiming','ON' ); |
DBA 権限。
なし。
次のクエリを実行すると、データベースサーバー要求が完了するまでの待ち時間が長い接続が識別されます。
SELECT Number, Name, CAST( DATEDIFF( second, LoginTime, CURRENT TIMESTAMP ) AS DOUBLE ) AS T, ReqTimeActive / T AS PercentActive FROM dbo.sa_performance_diagnostics() WHERE PercentActive > 10.0 ORDER BY PercentActive DESC; |
現在実行中で、60 秒よりも長く実行されているすべての要求を検索します。
SELECT Number, Name, CAST( DATEDIFF( second, LastReqTime, CURRENT TIMESTAMP ) AS DOUBLE ) AS ReqTime FROM dbo.sa_performance_diagnostics() WHERE ReqStatus <> 'IDLE' AND ReqTime > 60.0 ORDER BY ReqTime DESC; |
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |