実行されたSQLを確認する方法
Verticaで、実行されたSQLを確認するには、以下の2種類の方法があります。
・vertica.log を参照する
・システムテーブルを参照する
本記事では、システムテーブルを参照する方法をご紹介します。
システムテーブルから実行されたSQLを確認することにより、実行時間が長いSQLのランキング表示や、監査に利用することができます。
システムテーブルの参照SQL例
以下の例では、過去1分間に実行されたSQLを参照します。
SELECT
us.session_start_timestamp, /* セッション開始時刻 */
us.session_end_timestamp, /* セッション終了時刻 */
qr.start_timestamp, /* SQL実行開始時刻 */
qr.end_timestamp, /* SQL実行終了時刻 */
qr.request_duration_ms, /* SQL実行経過時間(ミリ秒) */
qr.success, /* SQL実行成否 */
us.user_name, /* DBユーザー名 */
us.client_hostname, /* クライアントホスト名 */
us.client_os_user_name, /* クライアントOSユーザ名 */
us.client_type, /* クライアントタイプ */
us.client_label, /* クライアントのラベル */
qr.request, /* SQL文 */
qp.processed_row_count /* SQL処理件数 */
FROM
user_sessions us
INNER JOIN query_requests qr
ON us.session_id = qr.session_id
INNER JOIN query_profiles qp
ON (qr.session_id = qp.session_id
AND qr.statement_id = qp.statement_id
AND qr.transaction_id = qp.transaction_id)
WHERE
qr.start_timestamp >= (sysdate-1/1440) /* 過去1分間を参照する場合の検索条件例 */
ORDER BY
us.session_start_timestamp,
qr.start_timestamp,
us.user_name;SQL実行経過時間(ミリ秒)の列でソートすることにより長時間実行されたSQLを参照したり、
SQL実行開始時刻、DBユーザー名、クライアントホスト名、SQL文の列から「いつ」「誰が」「どこから」「何を」といった情報を参照できます。
システムテーブル参照の実行例
上述のSQLでシステムテーブルを参照した場合の例をご紹介します。
dbadmin=> SELECT
dbadmin-> us.session_start_timestamp,
dbadmin-> us.session_end_timestamp,
dbadmin-> qr.start_timestamp,
dbadmin-> qr.end_timestamp,
dbadmin-> qr.request_duration_ms,
dbadmin-> qr.success,
dbadmin-> us.user_name,
dbadmin-> us.client_hostname,
dbadmin-> us.client_os_user_name,
dbadmin-> us.client_type,
dbadmin-> us.client_label,
dbadmin-> qr.request,
dbadmin-> qp.processed_row_count
dbadmin-> FROM
dbadmin-> user_sessions us
dbadmin-> INNER JOIN query_requests qr
dbadmin-> ON us.session_id = qr.session_id
dbadmin-> INNER JOIN query_profiles qp
dbadmin-> ON (qr.session_id = qp.session_id
dbadmin(> AND qr.statement_id = qp.statement_id
dbadmin(> AND qr.transaction_id = qp.transaction_id)
dbadmin-> WHERE
dbadmin-> qr.start_timestamp >= (sysdate-1/1440)
dbadmin-> ORDER BY
dbadmin-> us.session_start_timestamp,
dbadmin-> qr.start_timestamp,
dbadmin-> us.user_name;
session_start_timestamp | session_end_timestamp | start_timestamp | end_timestamp | request_duration_ms | success | user_name | client_hostname | client_os_user_name | client_type | client_label | request | processed_row_count
-------------------------------+-------------------------------+-------------------------------+-------------------------------+---------------------+---------+-----------+---------------------+--------------------+---------------+------------------------+--------------------------------------------------------+---------------------
2019-07-17 17:25:36.201323+09 | 2019-07-17 17:25:36.471432+09 | 2019-07-17 17:25:36.250442+09 | 2019-07-17 17:25:36.409929+09 | 159 | t | dbadmin | 192.168.16.168:50774 | yusakamoto | ODBC Driver | Windows ODBCラベルテスト | SELECT * FROM "test"."public"."t1" | 1
2019-07-17 17:26:10.95041+09 | 2019-07-17 17:26:11.120153+09 | 2019-07-17 17:26:11.035179+09 | 2019-07-17 17:26:11.041109+09 | 6 | t | dbadmin | 192.168.16.168:50779 | yusakamoto | JDBC Driver | Windows JDBCラベルテスト | SELECT node_name FROM v_monitor.current_session; | 1
2019-07-17 18:15:49.225963+09 | 2019-07-17 18:15:49.416906+09 | 2019-07-17 18:15:49.309066+09 | 2019-07-17 18:15:49.315203+09 | 6 | t | dbadmin | 192.168.213.55:58426 | dbadmin | JDBC Driver | Linux JDBCラベルテスト | SELECT node_name FROM v_monitor.current_session; | 1
2019-07-17 19:16:40.5626+09 | | 2019-07-17 19:16:57.468899+09 | 2019-07-17 19:16:57.47671+09 | 8 | t | dbadmin | 172.16.60.25:39774 | dbadmin | vsql | | select 'Linux リモート vsql', sysdate from dual; | 1
2019-07-17 19:23:04.111737+09 | | 2019-07-17 19:23:18.052298+09 | 2019-07-17 19:23:18.058445+09 | 6 | t | dbadmin | 192.168.16.168:64590 | yusakamoto | vsql | | select 'Windows remote vsql test',sysdate from dual; | 1
2019-07-17 18:08:51.515756+09 | | 2019-07-17 19:28:45.485399+09 | 2019-07-17 19:28:45.498517+09 | 13 | t | dbadmin | [::1]:49344 | dbadmin | vsql | | select 'Linux ローカル vsql' from dual; | 1
:
:参照結果をCSV出力する場合は、下記記事をご参照ください。
・SELECT結果をCSV出力する方法
https://www.ashisuto.co.jp/cm/analytics-database/csv-output.html
検証バージョンについて
この記事の内容はVertica 9.2で確認しています。
更新履歴
2019/08/01 検証バージョンを9.2に変更
2016/03/09 本記事を公開