ablog

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

パフォーマンス分析に DuckDB を使ってみる

CSV などに出力された性能分析を行う際によく EXCEL を使ったりするが、DuckDB が便利だと聞いてインストールしてみた。 インストール curl https://install.duckdb.org | sh ~/.zshrc に以下を追加 export PATH='~/.duckdb/cli/latest':$PATH 起動する sour…

Redshift で現在から x 時間前のタイムスタンプを取得する

現在から1日前のタイムスタンプを取得する。 # select trunc(sysdate)-1; ?column? 2025-06-10 現在から16時間前のタイムスタンプを取得する # select dateadd(hour,-16, sysdate); date_add 2025-06-10 14:52:09.714924 参考 SYSDATE 関数 - Amazon Redshif…

psql で FETCH_COUNT を使って OOM Killer に kill されないようにする

Linux で psql の実行結果をファイルに出力する際、結果セットのサイズが大きいと OS の OOM Killer に kill されることがある。 FETCH_COUNT を指定すると FETCH_COUNT 単位でメモリにキャッシュするようになる。 FETCH_COUNT の指定方法 psql のコマンドラ…

Amazon Redshift で Elastic resize の完了を確認する方法

AWS

Amazon Redshift で Elastic resize した後、バックグラウンドでノードスライスにデータを再分配が完了するまではクエリの実行に時間がかかる可能性がある。 2. このオペレーションはクラスターのメタデータを移行します。クラスターは数分間使用できません…

Amazon Redshift の ra3 インスタンスのローカルSSDのキャッシュについて

Amazon Redshift の ra3 インスタンスのローカルSSDのキャッシュについて Compute nodes use large, high performance SSDs as local caches. Redshift leverages workload patterns and techniques such as automatic fine-grained data eviction and intel…

Redshift の CW メトリクスの Write Latency

Write latency – Shows the average amount of time in milliseconds taken for disk write I/O operations. You can evaluate the time for the write acknowledgment to return. When latency is high, it means that the sender spends more time idle (n…

Amazon Redshift でノード・スライスごとのブロック数を確認する

Amazon Redshift でノード・スライスごとのブロック数を確認する。 select b.node, a.slice, sum(blocknum) from svv_diskusage a, stv_slices b where a.slice = b.slice group by b.node, a.slice order by b.node, a.slice, sum(blocknum) desc; node|sli…

Amazon Redshift の redistribute と broadcast

Amazon Redshift の redistribute と broadcast の違いについてのメモ。 redistribute と broadcast(A copy of the entire table is broadcast to all the compute nodes) がある。 DS_DIST_OUTER The outer table is redistributed.DS_BCAST_INNER A copy o…

Redshift の分散スタイルやソートキーの自動最適化履歴を確認する

Redshift の分散スタイルやソートキーの自動最適化履歴は SVL_AUTO_WORKER_ACTION で確認することができる。 select table_id, type, status, eventtime, sequence, previous_state from SVL_AUTO_WORKER_ACTION; table_id | type | status | eventtime | se…

SYS_LOAD_ERROR_DETAIL で他のユーザーが実行したロード処理も参照できるようにする

デフォルトだと一般ユーザーは SYS_LOAD_ERROR_DETAIL を参照すると、自分が実行したロード処理のエントリしか表示できない。 他のユーザーが実行したロード処理のエントリも参照したい場合は SYSLOG ACCESS UNRESTRICTED を付与すればよい。 デフォルトでは…

自動VACUUM実行中に手動VACUUMを実行するとどうなるか

自動VACUUM実行中に手動VACUUMを実行すると、自動VACUUMが停止し、手動VACUUMが実行される。 Automatic vacuum operations pause if any of the following conditions are met: A user runs a data definition language (DDL) operation, such as ALTER TABL…

CloudWatch メトリクスのデータポイントの粒度と参照可能期間

AWS

CloudWatch メトリクスのデータポイントの粒度と参照可能期間 メトリクスの保持 CloudWatch では、次のようにメトリクスデータを保持します。 期間が 60 秒未満のデータポイントは、3 時間使用できます。これらのデータポイントは高解像度カスタムメトリクス…

Redshift でクラスターの一時停止・再開とパラメータグループの変更を許可する IAM ポリシー

AWS

Redshift でクラスターの一時停止・再開(特定のクラスターのみ)、パラメータグループ設定変更(特定の)を許可する IAM ポリシー 前提 マネジメントコンソールから人が操作する想定(AWS CLI など AWS API 経由で実行する場合も同じ)。 IAM ポリシー "Rea…

Redshift でユーザーの接続制限数(CONNECTION LIMIT)以上のコネクションを張ろうすると即時エラーになる

Redshift でユーザーの接続制限数以上のコネクションを張ろうとすると即時エラーになる。 検証結果 3本接続を張った後、4本目の接続を張ろうとすると即時エラーとなる。 $ psql -A -h rs-ra3-4xl-4n.********.us-east-1.redshift.amazonaws.com -p 5439 -d d…

Redshift でテーブルの所有者を変更するにはスーパーユーザー権限が必要

Amazon Redshift でテーブルの所有者を変更するにはスーパーユーザー権限が必要。 dev=> ALTER TABLE table_a OWNER TO user_a; ERROR: must be superuser to change owner 参考 ALTER TABLE - Amazon Redshift

Redshift でテーブルを見せずビュー経由でのみ見せる

qiita.com

Redshift Spectrum で外部スキーマの作成と同時に外部データベースを作成する

AWS

Redshift Spectrum で外部スキーマの作成と同時に外部データベースを作成する。 外部スキーマの作成と同時に外部データベースを作成するには、FROM DATA CATALOGステートメントで CREATE EXTERNAL DATABASE を指定して CREATE EXTERNAL SCHEMA 句を含めます…

Redshift Spectrum でサポートされるデータ型

AWS

次の データ型 がサポートされています。 SMALLINT (INT2) INTEGER (INT、INT4) BIGINT (INT8) DECIMAL (NUMERIC) REAL (FLOAT4) DOUBLE PRECISION (FLOAT8) BOOLEAN (BOOL) CHAR (CHARACTER) VARCHAR (CHARACTER VARYING) VARBYTE (CHARACTER VARYING) – Pa…

node.js から PostgreSQL の接続するためのパッケージ node-postgres(pg)

node-postgres.com qiita.com

Redshift の STL_QUERY.query と SYS_QUERY_HISTORY. query_id の対応表を作成する

AWS

Redshift の STL テーブルのクエリID(query列)と SYS ビューのクエリID(query_id)は別の値のため、クエリIDで結合することはできない。トランザクションID(STLとSYSのトランザクションIDが 1:1 の場合)で結合することができる。 Redshift の STL テー…

Redshift に Data API でアクセスするために必要な設定

AWS

Redshift に Data API でアクセスする場合、Internet Gateway や Public Access 許可がなくても、必要な IAM 権限があればアクセスできる。 DataAPIでは、AWSのIAMによる認証でクラスタにクエリを投げられるというのがウリなので、 出来るだけ外からは接続で…

SET SESSION AUTHORIZATION は SECURITY DEFINER 関数内で使用できない

Redshift で SET SESSION AUTHORIZATION は SECURITY DEFINER 関数内で使用できない。 SET SESSION AUTHORIZATIONをSECURITY DEFINER関数内で使用することはできません。 https://www.postgresql.jp/docs/9.4/sql-set-session-authorization.html

Redshift Serverless の監査ログ出力先は CloudWatch Logs のみ

Redshift Serverless の監査ログ出力先は CloudWatch Logs のみ。Provisioned は S3 にも出力できる。 Redshift Serverlessの監査ログもS3バケットに直接出力できないのかなーと思いましたが、今後のRedshift監査ログの出力先はCloudWatch Logsを推奨されて…

Windows に rsql をインストールして実行すると libssl-1_1-x64.ddl と libcrypto-l-1_1-x64.ddl が見つからないとエラーになる

AWS

事象 Windows Server に rsql をインストールして実行すると以下のエラーが発生する。 libssl-1_1-x64.ddlが見つからないため、コードの実行を続行できません。 プログラムを再インストールすると、この問題が解決する可能性があります。 libcrypto-l-1_1-x6…

AWS認定試験の領収書の入手方法

AWS

ピアソンVUEの場合、AWS試験申し込み完了時に、「ピアソンVUEお支払いの受領通知」という題目の領収書メールが届きます。そのため、まずは領収書メールを確認しましょう。(中略)領収書を再発行する方法を紹介します。 AWS Certification アカウントにサイ…

Redshift でクエリIDを指定して、クエリに関する性能情報をCSVに出力するスクリプト

Redshift でクエリIDを指定して、クエリに関する性能情報をCSVに出力する bash スクリプト(get_redshift_query_perf2)を作った。 内部的には bash から psql を実行して、sql ファイルを実行している。以前作ったスクリプト(get_redshift_query_perf)か…

psql でクエリの結果セットをファイルに出力する

psql でクエリの結果セットをファイルに出力したい場合、psql のコマンドラインで -o オプションで指定することもできるが、SQL スクリプト内でクエリ単位で出力ファイルを分けたい場合は \o オプションが使える。 書式 \o <file path> query text 実装例 yoheia/aws/re</file>…

psql でコマンドラインから変数を渡して SQL 内で参照する

psql でコマンドラインから変数を渡して SQL 内で参照する方法。 -v オプションで変数を渡し、 psql -v query_id=54321 ... SQL 内では :変数名 で渡された変数を参照する。 select * from SVL_QUERY_METRICS_SUMMARY where query = :query_id; 実装例 yohei…

bash の変数展開でファイル名(拡張子除く)を取得する

ファイル名の取得:${変数名##*/} 拡張子の削除:${変数名%.*} 拡張子の取得:${変数名##*.} bashの変数展開によるファイル名や拡張子の取得 #Bash - Qiita

マネコンで Amazon Redshift の性能情報を参照するために必要な IAM ポリシー

ViewOnlyAccess - AWS 管理ポリシー または AmazonRedshiftReadOnlyAccess - AWS 管理ポリシー が付与されていればよい。