はじめに

通常、実行中のSQLは「SQL実行中のセッションを強制的に終了する方法(CLOSE_SESSION関数)」の手順で停止できますが、SQLがハングしてしまい、CLOSE_SESSION関数や INTERRUPT_STATEMENT関数を実行しても、停止できない場合があります。本稿では、これらの方法でSQLを停止できない場合の対処方法を解説します。

※注意事項
Management Consoleから、実行中のSQLに対して「Close Session」や「Cancel Query」の停止操作は可能です。しかし、この操作は CLOSE_SESSION関数または INTERRUPT_STATEMENT関数を実行するためのコマンドを発行しているだけなので、Management Consoleを利用した場合も同様にSQLは停止できません。

対処方法

SQLを強制的に停止する方法は、以下の2つがあります。

①SQLのメモリを割当てを無効にする

SQLの割当てメモリサイズが「0KB」、SQLの実行可能な最大時間が「0秒」に指定されたユーザ定義リソースプールを作成します。作成したユーザ定義リソースプールにSQLを強制的に移動させることで、メモリの割当てがされない状態となり、停止させることができます。

②SQLを受け付けたノードを再起動する

複数ノード構成の場合は、SQLを受け付けたノードを再起動することで、停止させることができます。

※注意事項
シングル構成の場合は、非冗長化のためVerticaデータベース自体の再起動が必要です。

実行結果

SQLを強制的に停止した結果は、以下のとおりです。

①SQLのメモリを割当てを無効にする



②SQLを受け付けたノードを再起動する


参考情報

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

検証バージョンについて

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

更新履歴

2020/11/20 本記事を公開