Amazon Redshift: 実行クエリ&COPY処理が管理コンソールからTerminate出来るようになりました

2014.10.29

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

本日(2014/10/29:米国時間では2014/10/28)告知されたリリースノートにて、管理コンソールから実行中のクエリ及びロード処理のterminater(終了)処理が行えるようになりました。当エントリではその内容についてご紹介したいと思います。

これまでの対応方法

これまでは、処理に時間が掛かっているSQLクエリやテーブルへのロード処理に関してその処理を一旦終了させたいとなった場合、以下のような手順を踏まなければいけませんでした。

  • 管理コンソールで該当処理のクエリIDを特定
  • Redshiftクラスタにログイン
  • クエリIDに対してキャンセル処理を実施(例:クエリIDが123456の場合、CANCEL 123456;と言った具合に)

それが、今回の改善によって1アクションで済む形になります。

  • 管理コンソールで該当処理のクエリIDを特定し、選択後所定の処理を終了させるボタンを押下

動作検証

では、実際にどのようなオペレーションになるか試してみましょう。以下に1億8千万件データが入っているテーブルを用意しました。あんまやらないとは思いますが、そのテーブルに対してSELECT * FROMで検索を掛けてみます。Redshiftと言えども流石にこれでは時間掛かってしまいますね。実際結構な時間が掛かってしまっております。

# SELECT COUNT(*) FROM test_table;
   count   
-----------
 181706752
(1 row)

# \timing
Timing is on.
# SELECT * FROM test_table;
(結果は暫く返って来ない...)

上記クエリが実行されている状態で、管理コンソールにアクセスしてみます。クラスタの[Queries]タブの内容を見てみると、確かに時間掛かってますね。[Terminate Query]ボタンが新設されていますので、該当のクエリを選択後、ボタンを押下してみます。

redshift-terminate-queries-01

実行を取り止めるかどうか聞いて来るので、[Confirm]を選択。

redshift-terminate-queries-02

すると、程無くしてクエリがTerminateされました!

redshift-terminate-queries-03

上記[Queries]タブ同様、[Loads]タブにもボタンが新設されていました。同様のオペレーションでテーブルへのロード処理を取り止めたい場合に使えそうです。

redshift-terminate-queries-04

まとめ

以上、クエリ及びデータロードに関するTerminate処理についてのオペレーション改善ネタでした。この操作が出来るようになった事により、管理コンソールだけで状況の回復が行えるようになったのでわざわざpsql等でクラスタにアクセスする必要が無くなった(関連するユーザー情報を連携する必要が無くなった)という点が大きいと思います。管理コンソールを確認・及び当該操作が行えるようなIAM権限等を有していれば、お客様自身で管理コンソールから対応するという事も可能となるかと思います。今後も管理コンソールの充実に期待したいところですね。こちらからは以上です。

追記:

管理コンソールからの利用に伴うIAM権限の設定については、@con_mameさんの以下エントリに詳細が展開されていますので、是非ご参考ください。