AWS
svv_table_info の skew_sortkey1 の値は小さいほどよい。仮に skew_sortkey1 が 5 の場合、where句の条件でフィルタする前に他のカラムのデータを5ブロック読込む。 Ratio of the size of the largest non-sort key column to the size of the first column…
Redshift のユーザーレベルかセッションレベルでデフォルトタイムゾーンをUTCからJSTなどに設定するととができる。 クラスターレベルでは設定できない(2022/9/20時点で)。 参考 https://docs.aws.amazon.com/ja_jp/redshift/latest/dg/r_timezone_config.h…
Redshift の QMR の変更が動的に適用される(再起動不要)ことを確認した。 QMR で Query execution time (seconds) > 10800(3時間)でクエリを実行すると中断されない。 $ psql "host=redshift-cluster-poc-ads.********.ap-northeast-1.redshift.amazonaw…
マネジメントコンソールで [Amazon Redshift]-[Clusters]でクラスターを選択し、[Properties]-[Database configurations]-[Edit]-[Edit parameter group]でパラーメータグループを変更すると、 再起動するまで適用されないパラメータがある。例えば、WLM は…
11.1TBのスナップショットを ra3.4xlarge 2node にリストアしたところ、約3分で終了した。 手順 [Amazon Redshift]-[Clusters]-[Snapshots] で、リストアするスナップショットを選択、[Restore snapshot]-[Restore to provisioned cluster] を選択。 環境 ra…
Amazon Redshift での VACUUM のパフォーマンスに関する問題のトラブルシューティング STL_VACUUM - Amazon Redshift SVV_VACUUM_SUMMARY - Amazon Redshift SVV_VACUUM_PROGRESS - Amazon Redshift
Redshift の SVV_TABE_INFO の UNSORTED と VACUUM_SORT_BENEFIT が NULL になっているテーブルは ソートキーを指定していない説。 SVV_TABLE_INFO - Amazon Redshift
ほとんどデータを変更していないクラスターで数分程度。 ra3.4xlarge x 2ノード で、 データサイズは8TB程度。増分スナップショットなので速い模様。 参考 Amazon Redshift は、前回のスナップショット以降にクラスターに加えられた増分変更を追跡する、増分…
Redshift で Query cancelled on user's request が発生した場合の原因調査方法 Amazon Redshift でクエリが中止されました
中間結果書き出しが多いクエリを調べる(実行中のクエリ) クエリ select query, sum(blocks_to_disk) as mbytes, max(max_blocks_to_disk) as max_mbytes, min(starttime) as query_start_time from STV_QUERY_METRICS where segment = -1 -- セグメントレ…
書式 ISOLATION LEVEL を SNAPSHOT に変更する ALTER DATABASE database_name ISOLATION LEVEL SNAPSHOT 現在の ISOLATION LEVEL を確認する concurrency_model が 1 なら SNAPSHOT、2 なら SERIALIZABLE SELECT datname, datconfig FROM pg_database_info; …
psql で標準入力で標準入力で渡されたクエリを実行したい場合、-f オプションに - を指定すればよい。 ドキュメント -f filename --file=filename(中略)filenameに-(ハイフン)を指定すると、標準入力からEOFを示すもの、または\qメタコマンドまで読み取…
テーブル作成 create table public.test1( date_col date ); データ挿入 insert into test1(date_col) values('2022-01-01'); insert into test1(date_col) values('2022-02-01'); insert into test1(date_col) values('2022-03-01'); insert into test1(dat…
Redshift で TEMP TABLE を作成して、中間結果をディスクに書き出す。 dev=# CREATE TEMP TABLE TEST1 DISTSTYLE EVEN SORTKEY(lo_orderkey) AS SELECT * FROM lineorder; 実行中のクエリのクエリIDを調べる dev=# select trim(u.usename) as user, s.pid, q…
You can't use SUBSTRING to predictably extract the prefix of a string that might contain multi-byte characters because you need to specify the length of a multi-byte string based on the number of bytes, not the number of characters. To ext…
SET サーバー設定パラメータの値を設定します。SET コマンドを使用して、現在のセッションまたはトランザクションのみの期間の設定をオーバーライドします。 SET - Amazon Redshift SET コマンドを使用して、現在のセッションの期間だけ設定をオーバーライド…
Redshift における AWS Schema Conversion Tool(SCT) の extension pack の aws_teradata_ext の挙動を確認したメモ。 sample=# select aws_teradata_ext.TRUNC('20220818', 'RM'); trunc ------------ 2022-08-01 (1 row) sample=# select aws_teradata_ext…
select a.relname, b.nspname, a.relacl from pg_class a, pg_namespace b where a.relnamespace = b.oid and a.relacl is not null and b.nspname not like 'pg_%';
select usename, usesysid, usesuper, useconfig, groname, grosysid, grolist from pg_user, pg_group where pg_user.usesysid = any(pg_group.grolist); 参考 amazon web services - Redshift: How to list all users in a group - Stack Overflow
Redshift クラスターに awslabs - amazon-redshift-utils の AdminViews を作成する。 % git clone https://github.com/awslabs/amazon-redshift-utils.git % cd amazon-redshift-utils/src/AdminViews % ls -1 *.sql > run_all.sql % perl -i -pe 's/^/\\i …
Amazon Managed Grafana(AMG) で Redshift のクエリをモニタリングしてみた。ダッシュボードの定義(JSON)をインポートすると以下のようなダッシュボードを作成できる。 ダッシュボードの見た目 Redshift の設定 Redshift クラスターを選択し、[Actions]-[M…
SCTインストール SCT 1.0 Build 655 をダウンロードして、インストールする。 AWS SCT のインストール、検証、更新 - AWS Schema Conversion Tool JDBC 4.2–compatible driver version 2.1 (without the AWS SDK) をダウンロードする。 Amazon Redshift JDBC…
macOS版 SCT がなくなったので、SCT on EC2 Windows で使う手順。 macOS へアプリケーションインストール AWS CLI v2 Session Manager Plugin Microsoft Remote Desktop EC2インスタンス作成 EC2(Windows)インスタンス作成 AMI: Microsoft Windows Server …
Redshift に import した UDF を確認する。 sample=# select * from pg_library a, pg_language b where a.language_oid = b.oid; name | language_oid | file_store_id | owner | lanname | lanispl | lanpltrusted | lanplcallfoid | lanvalidator | lanacl…
SQL select a.proname, a.proacl, a.pronamespace, b.nspname from pg_proc a, pg_namespace b where b.nspname = 'aws_teradata_ext' and a.pronamespace = b.oid order by a.proname; 実行結果 proname | proacl | pronamespace | nspname ---------------…
IAMロールを作成する IAMロール RedshiftPauseResumeRole を作成 Permissions policies IAMポリシー RedshiftPauseResumeRolePolicy を作成してアタッチ { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action":…
Redshift で COPY コマンド実行時に query_temp_blocks_to_disk が使われることがあることを確認した。 QMR(Query Monitoring Rule) で query_temp_blocks_to_disk > 1MB のクエリを中止するよう設定した上で、分散キー・ソートキーが指定されたテーブルに非…
producer 側 create datashare test_db; alter datashare test_db set publicaccessible = true; alter datashare test_db add schema sample1, sample2; -- consumer 側で "select current_namespace;" を実行し、以下のクエリの <name space> に指定する grant usage o</name>…
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 INTEGE…
Redshift クラスターを土日&夜間に一時停止しコストを削減する - サーバーワークスエンジニアブログ