ablog

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

2023-04-01から1ヶ月間の記事一覧

Amazon Redshift でクエリテキストから SVL_QUERY_METRICS_SUMMARY を取得する

AWS

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 でゾーンマップがあってもソートキーが必要な理由

AWS

Amazon Redshift はゾーンマップで 1MB ブロックの最小値と最大値を保持しているので、クエリのフィルタ条件などに合致しないブロックを読み飛ばすことができる。ソートキーでソートされていないと同じ値のデータがあちこちのブロックに散らばるため、ソート…

Amazon Redshift で結合キーでKEY分散 vs EVEN 分散

AWS

計測 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(); …

Amazon Redshift のスライス毎の行の偏りを確認する

AWS

svv_table_info.skew_rows (スライス単位での最大行数/最小行数)の値が大きいと偏っている。 =# select * from svv_table_info where "table" = 'lineitem_dk_shipdate1'; -[ RECORD 1 ]----------+--------------------------------- database | tpch_3tb…

psql のプロンプトにデータベース名を表示する

%/はデータベース名 PostgreSQLのコマンドラインの動きを改善してみる | Yakst 例 ~/.psqlrc \set PROMPT1 '%[%033[1;32m%]%/ %n %`date '+%Y%m%d_%H:%M:%S'` %R%#%[%033[0m%] ' \set PROMPT2 '%[%033[1;32m%]%R%#%[%033[0m%] ' \timing on \set HISTSIZE 10…

Amazon Redshift で2列で内部結合しているクエリで分散キー指定列の違いによる比較

AWS

Amazon Redshift で2列で内部結合しているクエリで、分散キーが2列のうち偏りのある列にした場合と偏りのない列にした場合の比較。 検証結果 偏りのある列(l_shipdate)が分散キー select sum(a.l_quantity), count(a.l_orderkey), min(a.l_shipdate), max(…

Amazon Redshift で結合キーに関数を使うとソートマージ結合にならないパターン

AWS

Amazon Redshift で結合キーに関数を使うとソートマージ結合にならないパターン。 検証結果 結合キーに collate 関数を使用 クライアントからみた実行時間は25分47秒。 select a.l_linenumber, avg(a.l_quantity) from lineitem a, lineitem b where collate…

Amazon Redshift のソートマージ結合とハッシュ結合を比較する

AWS

ソートマージ結合になる条件 両テーブルの結合キーが分散キーとソートキーに指定されている 結合対象表の未ソート率が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…

Amazon Redshift でソートキーの順番による IO 量の差を見る

AWS

前提 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 を実行してみる

AWS

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 のデータセットをロード…

Amazon Redshift でクエリを実行しても SVL_QUERY_METRICS に記録されない場合

AWS

SVL_QUERY_METRICS は STL_QUERY_METRICS を参照しており、STL_QUERY_METRICS は1 秒未満で実行されるクエリセグメントは記録されない場合があるためと思われる。 STL_QUERY_METRICS Contains metrics information, such as the number of rows processed, C…

Amazon Redshift のソートキー指定による IO量の削減

AWS

計測 分散キー・ソートキーなし # 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 <> …