実行されたSQLを確認する方法
Verticaで、実行されたSQLを確認するには、以下の2種類の方法があります。・vertica.log を参照する
・システムテーブルを参照する
本記事では、システムテーブルを参照する方法をご紹介します。
システムテーブルから実行されたSQLを確認することにより、実行時間が長いSQLのランキング表示や、監査に利用することができます。
システムテーブルの参照SQL例
以下の例では、過去1分間に実行されたSQLを参照します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
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でシステムテーブルを参照した場合の例をご紹介します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
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出力する方法
http://vertica-tech.ashisuto.co.jp/csv-output/
検証バージョンについて
この記事の内容はVertica 9.2で確認しています。更新履歴
2019/08/01 検証バージョンを9.2に変更2016/03/09 本記事を公開
- 投稿タグ
- 実行SQL, 実行クエリ, query_requests, システムテーブル