ablog

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

AWS

Redshift でオブジェクト権限を持つグループ・ユーザーを確認する

AWS

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_%';

Redsfhit でユーザーとグループの一覧を確認する

AWS

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 を作成する

AWS

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 で Redshift のクエリをモニタリングする

AWS

Amazon Managed Grafana(AMG) で Redshift のクエリをモニタリングしてみた。ダッシュボードの定義(JSON)をインポートすると以下のようなダッシュボードを作成できる。 ダッシュボードの見た目 Redshift の設定 Redshift クラスターを選択し、[Actions]-[M…

SCT で Teradata の拡張パックを Redshift にインストールする

AWS

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…

SCT on EC2 Windows から Redshift に接続する

AWS

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 を確認する

AWS

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…

Redshift で特定スキーマの持つファンクションを調べる

AWS

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

Redshift で毎日決まった時間に一時停止する

AWS

IAMロールを作成する IAMロール RedshiftPauseResumeRole を作成 Permissions policies IAMポリシー RedshiftPauseResumeRolePolicy を作成してアタッチ { "Version": "2012-10-17", "Statement": [ { "Sid": "VisualEditor0", "Effect": "Allow", "Action":…

Redshift で COPY コマンド実行時の query_temp_blocks_to_disk を調べる

AWS

Redshift で COPY コマンド実行時に query_temp_blocks_to_disk が使われることがあることを確認した。 QMR(Query Monitoring Rule) で query_temp_blocks_to_disk > 1MB のクエリを中止するよう設定した上で、分散キー・ソートキーが指定されたテーブルに非…

Redshift のデータシェアリング設定手順

AWS

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 の Memory to disk (1 MB blocks) にひっかかる

AWS

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 を時限で一時停止・起動する設定

AWS

Redshift クラスターを土日&夜間に一時停止しコストを削減する - サーバーワークスエンジニアブログ

Redshift で分散スタイル変更時の VACUUM 要否

AWS

Redshift で分散スタイル変更時の VACUUM 要否を確認してみた。 EVEN分散->KEY分散に変更した場合 テーブル作成 dev=# drop table public.customer cascade; dev=# create table public.customer ( c_custkey integer not null, c_name varchar(25) not null…

Redshift で SPLIT_TO_ARRAY 関数でデリミタ区切りのリストを横縦変換する

AWS

テーブルのフィールドにカンマ区切りのデータを登録する。 dev=# create table pivot_test (id int, txt varchar); CREATE TABLE dev=# insert into pivot_test values (1,'AZ, Sidmar,1'),(2,'Kaihatsu,Suarez,9'),(3,'Azuma,Neymar,11'),(4,'OZ,Iniesta,8'…

Redsfhit でどのグループにユーザーが所属しているか確認する

AWS

クエリ select pg_user.usename, pg_user.usesysid, pg_group.groname, pg_group.grolist from pg_user,pg_group; 実行結果 usename | usesysid | groname | grolist ------------------------------+----------+----------------------------+--------- rds…

AWS CLI v2 のページャーを無効化する

AWS

Config で設定 恒久的にページ分割を無効化したい場合は、~/.aws/config ファイルに以下のように書きます。 ~/.aws/config [default] cli_pager= export コマンドで設定 一時的にページ分割を無効化したい場合は、export や setx コマンドで以下のように設定…

Redshift のパラメータグループを AWS CLI で設定する

AWS

マネコンでパラメータグループやワークロード設定を行う。 設定したパラメータを表示する % aws redshift describe-cluster-parameters --parameter-group-name poc-auto-wlm (中略) { "ParameterName": "max_concurrency_scaling_clusters", "ParameterVa…

Redshift でテーブルにアクセス権があるのに "permission denied for schema ..." と怒られる

事象 ユーザーにテーブルに対する権限を付与しているのに "permission denied for schema ..." と怒られる。 こんな感じでアクセス権を付与しているが、 % psql "host=redshift-cluster-poc.********.ap-northeast-1.redshift.amazonaws.com user=awsuser db…

Redshift でワークロードキュー毎のクエリ同時実行数を確認する

AWS

クラスター全体での実行中とキュー待ちのクエリ数 マネジメントコンソールで[Redshift]-[クラスターを選択]-[クエリのモニタリング]-[ワークロードの同時実行] オレンジ色:実行中のクエリ数 青色:ワークロードキュー待ちのクエリ数 「キューに入れられたク…

psql on EC2 で Redshift のクエリの結果セットが大きい場合のボトルネックを調べる

AWS

サマリー EC2インスタンス(t2.micro)から psql で Redshift に結果セットが100GB以上と大きい select 文を発行すると、CloudWatch メトリクスでネットワーク受信量 (バイト数)が約500MB/分になる。 m5.large では約3.2GB/分のスループットが出た。 t2.micr…

Redshift の superuser のパスワードを変更する

AWS

Redshift の superuser のパスワードはマネコンまたは AWS CLI から変更できる Amazon Redshift コンソールを使用して superuser アカウントのパスワードをリセットする Amazon Redshift コンソールを使用してsuperuser (または adminuser) のパスワードを変…

psql で Redshift から定期的に S3 に UNLOAD する

AWS

psql で Redshift から定期的に S3 に UNLOAD したメモ。 Redshift に接続する。 export LC_ALL=C /usr/pgsql-13/bin/psql "host=redshift-cluster-2.********.ap-northeast-1.redshift.amazonaws.com port=5439 dbname=dev user=awsuser" 10秒間隔で tv_que…

Amazon Redshift の VACUUM について

AWS

実行権限 テーブルの所有者またはスーパーユーザーのみがテーブルにバキューム処理を実行できる。 以下に、VACUUM に必要な権限を示します。 スーパーユーザー VACUUM の権限を持つユーザー テーブルの所有者 テーブルの共有先であるデータベース所有者 VACU…

Redshift で DROP 文を生成する

AWS

Redshift で存在するテーブル、ビュー、スキーマの DROP 文を生成する テーブル select 'drop table '||schemaname||'.'||tablename||' cascade;' from pg_tables where schemaname not in ('public', 'information_schema', 'catalog_history') and scheman…

Redshift で pg_table_def に問い合わせてテーブルのソートキーを調べる

AWS

Redshift で pg_table_def に問い合わせるとテーブルのソートキーを調べることができる。 調べたいスキーマを set search_path to スキーマ名>; で指定してやる必要がある。スキーマ一覧は psql なら \dn でリストを表示できる。 クエリ \pset pager set sea…

Redshift で複数カラムの圧縮エンコードを1つの ALTER 文で変更する

AWS

例 alter table schema1.test1 alter column col1 encode raw, alter column col2 encode raw, alter column col3 encode raw; 書式 ALTER TABLE - Amazon Redshift | ALTER COLUMN column_name ENCODE encode_type, .....;

(Aurora) PostgreSQL の Transaction ID は2億に達するとAUTO VACUUM で自動回収される

(Aurora) PostgreSQL の Transaction ID(XID) は AUTO VACUUM で autovacuum_freeze_max_age (デフォルトは2億)に達すると自動的に回収される。 以下は実際の CloudWatch メトリクスの MaximumUsedTransactionIDs のグラフの推移。 XID が2億(200M)に達…

Amazon Aurora の CloudWatch メトリクス VolumeReadIOPs/VolumeWriteIOPs は5分間の合計

Amazon Aurora の CloudWach メトリクス VolumeReadIOPs/VolumeWriteIOPs は5分間の合計、IOPS(秒間IO回数)は300秒(5分)で割って算出する必要がある。 メトリクス:VolumeReadIOPs コンソール名:ボリューム読み取りの IOPS (カウント) Applies to:Auro…

Amazon RDS のメモリ使用量を確認する

AWS

Amazon RDS のメモリ使用状況を調べる際に確認すべきポイント。以下のスクリーンショットは Aurora MySQL。 CloudWatch メトリクス Freeable Memory (実質メモリ使用量)を確認する。/proc/meminfo に MemAvailable に相当する(参考)。メモリ使用量を監視…