ablog

不器用で落着きのない技術者のメモ

Redshift で CREATE TEMP TABLE は QMR の Memory to disk (1 MB blocks) にひっかかる

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]
  -----------------------------------------------

参考

メトリクス 名前 説明
ディスクへのメモリ query_temp_blocks_to_disk 中間結果の書き込みに使用される一時ディスク容量 (1 MB ブロック)。有効な値は 0~319,815,679 です。
WLM クエリモニタリングルール - Amazon Redshift