Redshift で CREATE TEMP TABLE は QMR(Query Monitoring Rule) の Memory to disk (1 MB blocks) の制限にひっかかることを確認した。
準備
- QMR の設定
- テーブルを作成する
CREATE TABLE lineorder ( lo_orderkey INTEGER NOT NULL, lo_linenumber INTEGER NOT NULL, lo_custkey INTEGER NOT NULL, lo_partkey INTEGER NOT NULL, lo_suppkey INTEGER NOT NULL, lo_orderdate INTEGER NOT NULL, lo_orderpriority VARCHAR(15) NOT NULL, lo_shippriority VARCHAR(1) NOT NULL, lo_quantity INTEGER NOT NULL, lo_extendedprice INTEGER NOT NULL, lo_ordertotalprice INTEGER NOT NULL, lo_discount INTEGER NOT NULL, lo_revenue INTEGER NOT NULL, lo_supplycost INTEGER NOT NULL, lo_tax INTEGER NOT NULL, lo_commitdate INTEGER NOT NULL, lo_shipmode VARCHAR(10) NOT NULL );
- データをロードする
copy lineorder from 's3://awssampledb-yoheia/ssbgz/lineorder' iam_role 'arn:aws:iam::123456789012:role/redshift-spectrum-s3-fullaccess' gzip compupdate off region 'ap-northeast-1';
検証結果
- Memory to disk (1 MB blocks) :query_temp_blocks_to_disk の制限にあたり、クエリが中止される。
CREATE TEMP TABLE ZONO_CHARAI DISTSTYLE EVEN SORTKEY(lo_orderkey) AS SELECT * FROM lineorder; ERROR: Query (1267776) cancelled by WLM abort action of Query Monitoring Rule "temp_usage_default_queue". DETAIL: ----------------------------------------------- error: Query (1267776) cancelled by WLM abort action of Query Monitoring Rule "temp_usage_default_queue". code: 1078 context: Query (1267776) cancelled by WLM abort action of Query Monitoring Rule "temp_usage_default_queue". query: 0 location: wlm_query_action.cpp:156 process: wlm [pid=7108] -----------------------------------------------
参考
WLM クエリモニタリングルール - Amazon Redshift
メトリクス 名前 説明 ディスクへのメモリ query_temp_blocks_to_disk 中間結果の書き込みに使用される一時ディスク容量 (1 MB ブロック)。有効な値は 0~319,815,679 です。