はじめに

SQL の実行に時間がかかってしまい、処理を強制的に終了したい場合は、CLOSE_SESSION 関数を利用します。本記事は、CLOSE_SESSION 関数で特定セッションを強制的に終了する方法をご紹介します。

CLOSE_SESSION 関数の実行手順

1) QUERY_REQUESTS システムテーブルで、SQL の実行に時間がかかっているセッションを特定します。後述「注意点」を事前にご確認ください。


[QUERY_REQUESTS]

カラム名説明
NODE_NAMESQLが実行されたノード名
USER_NAMESQLを実行したDBユーザ名
SESSION_IDセッションID
REQUEST実行されたSQL
MEMORY_ACQUIRED_MBSQLによって取得されたメモリサイズ(MB単位)
START_TIMESTAMPSQLの開始時間
IS_EXECUTINGt: 現在実行中のSQLを対象とする場合
f: 完了したSQLを対象とする場合

2) CLOSE_SESSION 関数で「session_id=v_testdb_node0001-1889050:0x123」を指定し、終了します。


3) SQL を実行していたセッション「session_id=v_testdb_node0001-1889050:0x123」は終了し、ユーザには以下のエラーが返されます。



強制的にセッションを終了できない場合

SQL がハングしてしまい、CLOSE_SESSION 関数の実行では、特定セッションを強制的に終了できない場合があります。その場合は、以下の記事をご参考に対応してください。

SQL実行中のセッションを強制的に終了する方法②
http://vertica-tech.ashisuto.co.jp/session-close2/

注意点

DBが稼働中の状態で、強制的にOSシャットダウンをした場合に、QUERY_REQUESTS システムテーブルに記録されるセッションのステータスが更新されず、セッションが残存しているように見える事があります。このような場合は、QUERY_REQUESTS システムテーブルだけでなく、SESSIONS システムテーブルも確認し、セッションが切断されたことをご確認ください。

こちらは、ハングしたセッション(v_test_node0001-3171788:0x4d48a)を切断するために、強制的にOSシャットダウンした後にQUERY_REQUESTS システムテーブルを確認した結果です。


複数ノード構成の場合は、SESSIONS システムテーブルを検索することで、各ノードのログイン・セッション情報を取得可能です。SESSIONS システムテーブルを用いたセッションの確認方法です。


[SESSIONS]

カラム名説明
NODE_NAME接続しているノード
USER_NAME接続したDBユーザ名
SESSION_IDセッションID
STATEMENT_STARTセッションが開始した時刻
EXECUTION_TIMEセッションの接続経過時間
※表の列ではなく計算で求めた値
CURRENT_STATEMENT現在実行中のSQL
NULLは現在処理がないことを示す

参考情報


CLOSE_SESSION
https://docs.vertica.com/23.3.x/en/sql-reference/functions/management-functions/session-functions/close-session/

QUERY_REQUESTS
https://docs.vertica.com/23.3.x/en/sql-reference/system-tables/v-monitor-schema/query-requests/

SESSIONS
https://docs.vertica.com/23.3.x/en/sql-reference/system-tables/v-monitor-schema/sessions/

Management Consoleから特定のセッションをクローズする方法
http://vertica-tech.ashisuto.co.jp/mc_close_session/

セッションを全てクローズする方法
http://vertica-tech.ashisuto.co.jp/allsession-close/

検証バージョンについて

この記事の内容はVertica 23.3で確認しています。

更新履歴

2023/08/28 バージョン23.3用に改訂、
       「注意点」の項目追加、「参考情報」にマニュアルのリンクを追加
2022/05/27 バージョン11.1用に改訂、
        「はじめに」と「強制的にセッションを終了できない場合」の項目追加、
        「参考情報」にマニュアルとMC操作のリンク追加
2015/04/23 本記事を公開