Redshift で SELECT を順次実行中に、DDL(ALTER TABLE) を発行した場合、DDL 実行後に発行した SELECT は DDL を待機することを確認した。
SQL スクリプト
- lineorder.sql(SELECT)
\timing on \pset pager --\set FETCH_COUNT 1000 set enable_result_cache_for_session=off; select * from dev.public.lineorder;
- alter_lineorder.sql(ALTER TABLE)
alter table dev.public.lineorder add column added_col int default NULL;
検証手順
- ロングクエリ(SELECT)を実行する。
nohup psql "host=redshift-cluster-poc-central.********.ap-northeast-1.redshift.amazonaws.com user=awsuser dbname=dev port=5439" -f lineorder.sql > select1.log 2>&1 &
- DDL を実行する。
nohup psql "host=redshift-cluster-poc-central.********.ap-northeast-1.redshift.amazonaws.com user=awsuser dbname=dev port=5439" -f alter_lineorder.sql
- 立て続けにロングクエリ(SELECT)を3本実行する。
nohup psql "host=redshift-cluster-poc-central.********.ap-northeast-1.redshift.amazonaws.com user=awsuser dbname=dev port=5439" -f lineorder.sql > select2.log 2>&1 & nohup psql "host=redshift-cluster-poc-central.********.ap-northeast-1.redshift.amazonaws.com user=awsuser dbname=dev port=5439" -f lineorder.sql > select3.log 2>&1 & nohup psql "host=redshift-cluster-poc-central.********.ap-northeast-1.redshift.amazonaws.com user=awsuser dbname=dev port=5439" -f lineorder.sql > select4.log 2>&1 &
- DDL 発行後に実行した SELECT はロック待ちしている。
$ wget https://raw.githubusercontent.com/awslabs/amazon-redshift-utils/refs/heads/master/src/AdminScripts/lock_wait.sql $ psql "host=redshift-cluster-poc-central.********.ap-northeast-1.redshift.amazonaws.com user=awsuser dbname=dev port=5439" -f lock_wait.sql xid | pid | username | dbname | relation | schemaname | objectname | mode | granted | obj_type | txn_start | block_sec | block_min | block_hr | waiting | max_sec_blocking | num_blocking | pidlist -----------+------------+----------+--------+----------+------------+------------+---------------------+---------+----------+----------------------------+-----------+-----------+----------+---------+------------------+--------------+------------ 177187852 | 1073938652 | awsuser | dev | 133863 | public | lineorder | AccessShareLock | True | relation | 2025-09-01 10:41:39.157932 | 259.58 | 4.33 | 0.07 | | 213.58 | 1 | 1073938665 177187936 | 1073938665 | awsuser | dev | 133863 | public | lineorder | AccessExclusiveLock | False | relation | 2025-09-01 10:42:25.994057 | | | | 213.58 | | | 177187973 | 1073840564 | awsuser | dev | 133863 | public | lineorder | AccessShareLock | False | relation | 2025-09-01 10:42:41.396287 | | | | 197.58 | | | 177188005 | 1073897936 | awsuser | dev | 133863 | public | lineorder | AccessShareLock | False | relation | 2025-09-01 10:42:45.621279 | | | | 193.58 | | | (4 rows)