PG_CANCEL_BACKEND - Amazon Redshift

PG_CANCEL_BACKEND

クエリをキャンセルします。PG_CANCEL_BACKEND は、CANCELコマンドと機能的に同じものです。ユーザー自身が現在実行しているクエリをキャンセルできます。スーパーユーザーはどのクエリでもキャンセルできます。

構文

pg_cancel_backend( pid )

引数

pid

キャンセルするクエリのプロセス ID (PID)。クエリ ID を指定してクエリをキャンセルすることはできません。クエリのプロセス ID を指定する必要があります。INTEGER 値は必須です。

戻り型

なし

使用に関する注意事項

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

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

SELECT pid, TRIM(starttime) AS start, duration, TRIM(user_name) AS user, SUBSTRING(query,1,40) AS querytxt FROM stv_recents WHERE status = 'Running'; +-----+------------------------+----------+--------+-----------------------------+ | pid | starttime | duration | user | querytxt | +-----+------------------------+----------+--------+-----------------------------+ | 802 | 2013-10-14 09:19:03.55 | 132 | dwuser | select venuename from venue | | 834 | 2013-10-14 08:33:49.47 | 1250414 | dwuser | select * from listing; | | 964 | 2013-10-14 08:30:43.29 | 326179 | dwuser | select sellerid from sales | +-----+------------------------+----------+--------+-----------------------------+

プロセス ID 802 のクエリをキャンセルするには、次の例を使用します。

SELECT PG_CANCEL_BACKEND(802);