AWS
S3 にある Parquet ファイルを Glue の Crawler でクロールしてテーブルを作成し、文字列型のカラムを数値型に変更するとエラーになるという当たりまり前(Parquet は項目定義に型を持っているバイナリファイルのため)のことを検証した。型を変えたい場合は…
事象 Spark on EMR で Glue カタログのデータベース名を表示しようとすると、"because no identity-based policy allows the glue:GetDatabase action" で AccessDeniedException が発生する。 $ pyspark >>> from pyspark.sql import SparkSession >>> spar…
事象 AWS CLI v2 でクロスアカウントでaws s3 cp を実行すると "An error occurred (AccessDenied) when calling the GetObjectTagging operation" で失敗する。 AWS CLI は v2 % aws --version aws-cli/2.5.8 Python/3.9.11 Darwin/21.6.0 exe/x86_64 promp…
* AWS Open Data の New York City Taxi のデータを自アカウントの S3 バケットにコピーする。 S3 バケット作成 $ aws s3 mb s3://nyc-tlc-az/ --region us-east-1 ファイルコピー $ aws s3 cp --recursive "s3://nyc-tlc/trip data/" "s3://nyc-tlc-az/trip…
Amazon Redshift で列のデフォルト値を指定する。 dev awsuser 20230517_17:43:39 =# create table test_default_col( name varchar(10), updated timestamp DEFAULT sysdate ); CREATE TABLE Time: 632.178 ms dev awsuser 20230517_17:43:55 =# insert int…
Amazon Redshift RA3 の手動スナップショットの料金について 自動スナップショットは、 無料、最大35日間保持できる。 デフォルトで8時間ごとか、1ノードあたり 5GB 変更されると自動でスナップショットが作成される。 自動、手動ともに前回からの増分のみス…
Read は MySQL が 16KB、PostgreSQL が 8KB、Write は MySQL、PostgreSQL とも 4KB。 Each database page is 16 KB in Aurora MySQL-Compatible Edition and 8 KB in Aurora PostgreSQL-Compatible Edition.Aurora was designed to eliminate unnecessary I/…
SQL elect b.database, substring(b.querytxt,1,30) sql, a.* from svl_query_metrics_summary a, stl_query b where a. query = b.query and b.querytxt like '%/* TPC-H Q%' order by substring(b.querytxt,1,30); 結果 database | sql | userid | query |…
Amazon Redshift はゾーンマップで 1MB ブロックの最小値と最大値を保持しているので、クエリのフィルタ条件などに合致しないブロックを読み飛ばすことができる。ソートキーでソートされていないと同じ値のデータがあちこちのブロックに散らばるため、ソート…
計測 EVEN分散 =# select count(l_orderkey) from lineitem join orders on o_orderkey = l_orderkey and l_shipdate > '1996-01-01'; count ------------ 7518747994 (1 row) Time: 150000.148 ms (02:30.000) クエリID取得 =# select pg_last_query_id(); …
svv_table_info.skew_rows (スライス単位での最大行数/最小行数)の値が大きいと偏っている。 =# select * from svv_table_info where "table" = 'lineitem_dk_shipdate1'; -[ RECORD 1 ]----------+--------------------------------- database | tpch_3tb…
Amazon Redshift で2列で内部結合しているクエリで、分散キーが2列のうち偏りのある列にした場合と偏りのない列にした場合の比較。 検証結果 偏りのある列(l_shipdate)が分散キー select sum(a.l_quantity), count(a.l_orderkey), min(a.l_shipdate), max(…
Amazon Redshift で結合キーに関数を使うとソートマージ結合にならないパターン。 検証結果 結合キーに collate 関数を使用 クライアントからみた実行時間は25分47秒。 select a.l_linenumber, avg(a.l_quantity) from lineitem a, lineitem b where collate…
ソートマージ結合になる条件 両テーブルの結合キーが分散キーとソートキーに指定されている 結合対象表の未ソート率が20%未満 Merge Join Typically the fastest join, a merge join is used for inner joins and outer joins. The merge join is not used f…
前提 Cloud Data Warehouse Benchmark Derived from TPC-H のテーブル・データを使用 環境: ue-east-1 に Amazon Redshift クラスター(ra3.4xlarge x 4 node)を作成 計測結果 効率的なソートキー 実行時間(クライアント側): 2.8 秒 =# select min(l_ship…
Amazon Redshift で Cloud Data Warehouse Benchmark Derived from TPC-H を実行してみる。 ue-east-1 に Amazon Redshift クラスターを作成する ra3.4xlarge x 4 node Cloud Data Warehouse Benchmark Derived from TPC-H の 100GB のデータセットをロード…
SVL_QUERY_METRICS は STL_QUERY_METRICS を参照しており、STL_QUERY_METRICS は1 秒未満で実行されるクエリセグメントは記録されない場合があるためと思われる。 STL_QUERY_METRICS Contains metrics information, such as the number of rows processed, C…
計測 分散キー・ソートキーなし # set search_path to ssbgz_no_sortkey; # show search_path; # set enable_result_cache_for_session=off; -- 分散キー・ソートキーは設定されていない # select * from pg_table_def where (distkey = true or sortkey <> …
svl_query_summary.is_rrscan では判断できない。rows_pre_filter - rows で判断する。 ソートキーがないとき テーブルを作成する CREATE TABLE lineorder ( lo_orderkey integer not null, lo_linenumber integer not null, lo_custkey integer not null, l…
手順 prefix を作成する aws s3api put-object --bucket awssampledb --key "auto-copy-lineorder/" テーブルを作成する CREATE TABLE public.lineorder ( lo_orderkey INTEGER NOT NULL, lo_linenumber INTEGER NOT NULL, lo_custkey INTEGER NOT NULL, lo_…
Amazon Redshift で Commit/Rollback せずにセッションを閉じた場合に commit されているか rollback されているか。psql などの SQL クライアントで autocommit が有効な場合は DML を発行すると自動的に commit を発行するので、commit が発行する前に閉じ…
AWS Analytics Advent Calendar 2022 の 20 日目のエントリーです。 Amazon Redshift のシステムテーブル・ビューからデータドリブンで遅いクエリのボトルネック(どこに時間がかかっているか)を分析する方法を紹介します。 クエリを実行して情報を収集する…
RDS Oracle の Performance Insights(PIs) は AWR や ASH を使っていない。なぜなら、AWR や ASH のない SE2 でも使える This post discusses the Oracle performance analysis offerings available within Oracle SE. We can use Oracle Statspack, an opti…
Delete + Insertをトランザクション(begin/end)で囲んで実行中に他セッションからの Insert はブロックされ(待たされ)る。 Delete + Insertするセッション % psql -a "host=redshift-cluster-poc-central.********.ap-northeast-1.redshift.amazonaws.co…
クエリのボトルネック分析の流れ STL_WLM_QUERY でクエリのキュー待ち時間と実行時間を確認する。 子クエリに分割されている場合は子クエリ別に確認できる。 SVL_QUERY_METRICS でクエリの実行時間の内訳と仕事量(CPU時間、IO量、中間結果の書出しサイズ)…
Redshift のパラメータ statement_timeout が 0 だとクエリはタイムアウトしない。statement_timeout はWLMでのキュー待ち時間と実行時間の両方を含む。キュー待ち時間に上限を設定したい場合は QMR で query_queue_time を使用する。 The statement_timeout…
マネジメントコンソールから [Amazon Redshift]-[Clusters]-[クラスターを選択]-[Query Monitoring]-[Workload concurrency]-[Concurrency scaling usage] で確認できる。 sampledb=# select * from SVCS_CONCURRENCY_SCALING_USAGE limit 10; start_time | …
容量制限つきのスキーマを作成して、ユーザーが利用できるようにする。 superuser でスキーマ作成権限を持つユーザーを作成する。 $ psql -a "host=redshift-cluster-poc-ads.********.ap-northeast-1.redshift.amazonaws.com user=awsuser dbname=sampledb …
Redshift でユーザーに CREATE SCEMA 権限を付与するには、CREATE SCEMA 権限を持つ Role を作成して、ユーザーに Role を付与する。 $ psql -a "host=redshift-cluster-poc-ads.********.ap-northeast-1.redshift.amazonaws.com user=awsuser dbname=sample…
SELECT con.* FROM pg_catalog.pg_constraint con INNER JOIN pg_catalog.pg_class rel ON rel.oid = con.conrelid INNER JOIN pg_catalog.pg_namespace nsp ON nsp.oid = connamespace WHERE nsp.nspname = '<schema name>' AND rel.relname = '<table name>'; ... # \d+ observation</table></schema>…