ablog

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

AWS

Redshift で実行時間が長いクエリの disk spill/skewness を確認するクエリサンプル

Redshift で実行時間が長いクエリの disk spill を確認するクエリサンプル \pset format unaligned \pset fieldsep '|' \t off select any_value(a.username) username, any_value(a.query_type) query_type, any_value(a.generic_query_hash) generic_query…

Redshift で superuser 権限を付与せずに sys_connection_log にアクセスを許可するためには、sys:monitor ロールを付与すればよい

Redshift で superuser 権限を付与せずに sys_connection_log にアクセスを許可するためには、sys:monitor ロールを付与すればよい ユーザー作成 dev=# create user test_monitor password 'xxx'; CREATE USER dev=# \q 新ユーザーで sys_connection_log に…

Multi-AZ 構成の Redshift で Classic resize をしたメモ

Multi-AZ 構成の Redshift で Classic resize をしたメモ The resize for Amazon Redshift cluster 'rs-ra3-large-maz' completed at 2025-12-11 02:16 UTC, and the cluster is available for reads and writes. The resize was initiated at 2025-12-11 02…

Amazon Redshift で VACUUM DELETE の必要性を確認する

SVV_TABLE_INFO の rows - estimated_visible_rows の差が大きいと、VACUUM DELETE の効果が見込める。 列名 データ型 説明 tbl_rows numeric(38,0) テーブル内の合計行数。この値には、削除対象としてマークされ、まだバキューム処理されていない列が含まれ…

Redshift で VACUUM が Scaling Cluster にルーティングされるか

Redshift で VACUUM が Scaling Cluster にルーティングされるか検証してみた。 結果としては、Primary でしか実行されない。理由は concurrency_scaling_status = 3(Concurrency Scaling ineligible query - Query is an Unsupported DML)。 シナリオ VAC…

Redshift の SVV_TABLE_INFO.skew_rows の意味

Redshift の SVV_TABLE_INFO.skew_rows の意味 lineorder テーブルの skew_rows は 3.67 =# select * from svv_table_info where schema = 'ssbgz_before' and "table" = 'lineorder'; -[ RECORD 1 ]----------+--------------------------------- database …

Redshift でクエリが Scaling Cluster で実行されなかった理由を調べる方法

Redshift でクエリが Scaling Cluster で実行されなかった理由を調べる STL_QUERY.concurrency_scaling_status でクエリが Scaling Cluster を利用しなかった理由を確認できる(数値) STL_QUERY - Amazon Redshift 数値 の意味は SVL_QUERY_CONCURRENCY_SCA…

Begin-End でトランザクションスコープに囲んだクエリが Scaling Cluster にルーティングされるか

Begin-End でトランザクションスコープに囲んだクエリが Redshift の Scaling Cluster にルーティングされるか検証してみた。 検証結果 Begin-End でトランザクションスコープを囲んだ DELETE/INSERT のみを実行している状態で、スケーリングクラスターでク…

Redshift の自動WLM のキュー数は最大8

自動ワークロード管理 (WLM) では、Amazon Redshift がクエリの同時実行数とメモリの割り当てを管理します。サービスクラスの識別子 100〜107 を使用して、最大 8 つのキューを作成できます。各キューには優先度があります。 自動 WLM の実装 - Amazon Redsh…

Redshift で BEGIN... END トランザクションステートメントを使用した場合の制約

When non-supported write statements, such as CREATE without TABLE AS, are included in an explicit transaction before the supported write statements, none of the write statements will run on concurrency-scaling clusters. Concurrency scaling…

システムビューで自分以外が実行したクエリを参照できるようにする

By default, only Amazon Redshift database superusers have permission to view all databases. To view data that other users generate in system tables, add the SYSLOG ACCESS parameter with UNRESTRICTED access.Note: Users with SYSLOG ACCESS ca…

Redshift で Datasharing している View を Drop/Create すると付与済みの権限は喪失するか

Redshift で Datasharing している View に対して、オブジェクトレベルで Grant している場合、Create or Replace すると権限は維持されるが、Drop/Create すると権限が喪失することを確認した。 Producer 側 データ共有を作成する CREATE DATASHARE cnt_dat…

AWS マネジメントコンソールに関する問題についてサポート問合せの仕方

AWS

repost.aws

Redshift で Late Binding View を使うと CREATE OR REPLACE VIEW で列の追加・削除が可能

Redshift で既存の View を CREATE OR REPLACE VIEW する場合、列の追加・削除やデータ型が変わる場合エラーになる。Late Binding View を使うと CREATE OR REPLACE VIEW で列の追加・削除が可能。 OR REPLACE 同じ名前のビューが既に存在する場合、ビューは…

Redshift の COPY コマンドにおける Null の扱い

EMPTYASNULL Amazon Redshift で CHAR と VARCHAR の空のフィールドを NULL としてロードすることを指定します。INT など、他のデータ型の空のフィールドは常に NULL でロードされます。データに 2 つの区切り記号が連続し、区切り記号の間に文字がない場合…

SYS_QUERY_HISTORY の execution_time は queue_time/lock_wait_time/planinng_time/compile_time を含まない

Redshift で SYS_QUERY_HISTORY の execution_time は queue_time/lock_wait_time/planinng_time/compile_time を含まない。 [クエリの詳細] ページには、次のコンポーネントがあります。 上部ペイン - ページの上部ペインには、ステータスやタイプなど、ク…

Redshift で非アクティブなセッションのタイムアウト時間を設定する

SESSION TIMEOUT limit | RESET SESSION TIMEOUT セッションが非アクティブまたはアイドル状態を維持する最大時間 (秒) です。指定できる範囲は 60 秒 (1 分) から 1,728,000 秒 (20 日) です。ユーザーに対しセッションタイムアウトが設定されていない場合…

Redshift で非 ASCII 文字をフィルタする

Redshift で非 ASCII 文字をフィルタする。 テーブルを作成する。 CREATE TABLE source_table ( col1 VARCHAR(100) ); CREATE TABLE target_table ( col1 VARCHAR(100) ); 非 ASCII 文字を含むレコードを insert する。 insert into source_table values('as…

Redshift でユーザー別のデータベース接続数の推移を調べる

Redshift でユーザー別のデータベース接続数の推移を調べる。 調査クエリ WITH RECURSIVE time_series(time_value) AS ( /* Recursive CTE で過去 7 日間の 1 分ごとの時間を生成 */ -- 開始時点(7日前) SELECT date_trunc('minute', dateadd(day, -7, GET…

Redshift の Multi-AZ で参照可能なシステムテーブル・ビュー

調査クエリ SELECT relname FROM PG_CLASS_INFO WHERE (upper(relname) LIKE 'STL_%' OR upper(relname) LIKE 'SVCS_%' OR upper(relname) LIKE 'SVL_%' OR upper(relname) LIKE 'SVV_%' OR upper(relname) LIKE 'STV_%' OR upper(relname) LIKE 'SYS_%') AN…

Redshift で WLM キューが溜まった状態から Concurrency scaling を有効化後に Scaling cluster でクエリが実行されるまでの時間

Redshift で WLM キューが溜まった状態から Concurrency scaling を有効化後に Scaling cluster でクエリが実行されるまでの時間を検証してみた。環境セットアップ手順は以下参照。 Amazon Redshift に重いクエリを同時多重実行しながら性能情報を見る - abl…

Redshift のシステムビューの定義を確認する

Redshift のシステムビューの定義を確認する。 # show view svv_table_info; ↓整形済み SELECT btrim(((stvp.datname) :: character varying) :: text) AS "database", btrim( ( (nvl2(mvi.mv_id, mvi.mv_schema, pgn.nspname)) :: character varying ) :: t…

Amazon Redshift でロックを保持しているクエリを調査する

AWS

問題となるクエリを検出する 特定のテーブルでロックの問題が頻繁に発生する場合は、SYS_QUERY_HISTORY を参照し、問題の原因となっているクエリを確認してください。 SELECT * FROM SYS_QUERY_HISTORY WHERE transaction_id = transaction ID; Amazon Redsh…

Trusted Advisor の「S3 の不完全なマルチパートアップロードの中止設定」

なお、マルチパートアップロードは7日以上掛かるものに関してライフサイクルルールを設定することが推奨されており、Trusted Advisorでも検知されます。以下のブログもご参考ください。 dev.classmethod.jp [小ネタ] Amazon S3 マルチパートアップロードの状…

SYSLOG ACCESS UNRESTRICTED 権限があってもメタデータビューは自分以外の行を参照できない

Amazon Redshift で SYSLOG ACCESS UNRESTRICTED 権限があっても SVV_USER_INFO などのメタデータビューは自分以外の行を参照できない。 メタデータビューの場合、Amazon Redshift は SYSLOG ACCESS UNRESTRICTED が許可されているユーザーには表示を許可し…

Amazon Redshift の SYS_QUERY_HISTORY の username 列でユーザー名を取得する

SYSLOG ACCESS UNRESTRICTED 権限を付与したユーザーで SYS_QUERY_HISTORY を参照すると、自分以外が発行したクエリとその username を参照することができる。 ユーザークエリーの詳細表示には、SYS_QUERY_HISTORY を使用します。いくつかのフィールドに関す…

Amazon Redshift のテーブルのリストアに必要な IAM 権限は RestoreTableFromClusterSnapshot

Amazon Redshift のテーブルのリストアに必要な IAM 権限は RestoreTableFromClusterSnapshot である。 IAM ポリシー例 { "Sid": "VisualEditor4", "Effect": "Allow", "Action": [ "redshift:RestoreTableFromClusterSnapshot" ], "Resource": "arn:aws:red…

Elastic resize 時のデータスライス

エラスティックリサイズの操作では、データスライスの分散が不均一であることが原因で、ノード間でデータの偏りが発生する可能性があります。クラスターでデータに偏りが生じた場合は、従来のサイズ変更を実行してください。 Amazon Redshift でエラスティッ…

Amazon Redshift で Late Binding View から通常 View を参照している場合、通常 View を Drop & Create することができる

Amazon Redshift で Late Binding View から通常 View を参照している場合、通常 View を Drop & Create することができることを確認した。 通常 View から通常 View を参照している場合は、依存関係があるため、参照元 View を Drop できない(CASCADE オプ…

Amazon Redshift で View にクエリの射影が Push down されるか検証してみた

AWS

Amazon Redshift で View にクエリの射影が Push down されることを検証した。参照元テーブルの全カラムにアクセスする View(select * form ...)に対して、select 句で特定カラムのみ指定するクエリを実行すると、指定したカラムのブロックのみ読込むこと…