メニュー
Amazon Redshift
データベース開発者ガイド (API Version 2012-12-01)

CANCEL

現在実行中のデータベースクエリをキャンセルします。

CANCEL コマンドは実行中のクエリのプロセス ID を必要とし、クエリがキャンセルされたことを確認する確認メッセージを表示します。

構文

Copy
CANCEL process_id [ 'message' ]

パラメーター

process_id

キャンセルするクエリに対応するプロセス ID。

'message'

オプションの確認メッセージ。クエリのキャンセルが完了したときに表示されます。メッセージを指定しなかった場合、Amazon Redshift は確認としてデフォルトメッセージを表示します。メッセージは一重引用符で囲む必要があります。

使用に関する注意事項

クエリ ID を指定してクエリをキャンセルすることはできません。クエリのプロセス ID (PID) を指定する必要があります。ユーザーによって現在実行されているクエリのみキャンセルできます。スーパーユーザーはすべてのクエリをキャンセルできます。

複数のセッションのクエリが同じテーブルのロックを保持している場合、PG_TERMINATE_BACKEND 関数を使用してセッションの 1 つを終了することができます。これにより、終了したセッションで現在実行中のトランザクションがあれば、そのすべてのロックが強制的に解放され、トランザクションがロールバックされます。STV_LOCKS システムテーブルに対してクエリを実行して、現在保持しているロックを表示します。

特定の内部イベントに続いて、Amazon Redshift はアクティブなセッションを再起動し、新しい PID を割り当てる場合があります。PID が変更されている場合は、次のようなエラーメッセージが表示されることがあります:

Copy
Session <PID> does not exist. The session PID might have changed. Check the stl_restarted_sessions system table for details.

新しい PID を見つけるには、STL_RESTARTED_SESSIONS システムテーブルに対してクエリを実行し、oldpid 列でフィルタリングします。

Copy
select oldpid, newpid from stl_restarted_sessions where oldpid = 1234;

現在実行されているクエリをキャンセルするには、キャンセルするクエリのプロセス ID を最初に取得します。現在実行されているすべてのクエリのプロセス ID を確認するには、次のコマンドを入力します。

Copy
select pid, starttime, duration, trim(user_name) as user, trim (query) as querytxt from stv_recents where status = 'Running'; pid | starttime | duration | user | querytxt -----+----------------------------+----------+----------+----------------- 802 | 2008-10-14 09:19:03.550885 | 132 | dwuser | select venuename from venue where venuestate='FL', where venuecity not in ('Miami' , 'Orlando'); 834 | 2008-10-14 08:33:49.473585 | 1250414 | dwuser | select * from listing; 964 | 2008-10-14 08:30:43.290527 | 326179 | dwuser | select sellerid from sales where qtysold in (8, 10);

クエリテキストをチェックし、キャンセルするクエリに対応するプロセス ID (PID) を確認します。

PID 802 を使用する次のコマンドを入力して、そのクエリをキャンセルします。

Copy
cancel 802;
クエリを実行していたセッションは次のメッセージを表示します。
Copy
ERROR: Query (168) cancelled on user's request
ここで、168 はクエリ ID です (クエリのキャンセルに使用されるプロセス ID ではありません)。

また、デフォルトメッセージの代わりに表示するカスタム確認メッセージを指定することもできます。カスタムメッセージを指定するには、CANCEL コマンドの最後に引用符で囲んだメッセージを付けます。

Copy
cancel 802 'Long-running query';
クエリが実行されていたセッションは次のメッセージを表示します。
Copy
ERROR: Long-running query