AWS エンジニアの皆様、AWS サービスアップデートのキャッチアップおつかれさまです。
このエントリは AWS Analytics Advent Calendar 2024 の4日目の記事です。
昨日は 大薗さんの状況に合わせて、とても素晴らしい食事プランを提案してくれる 有益なエントリでした!
AWS Summit Tokyo 2023 で "Amazon Redshift クエリパフォーマンスチューニング Deep Dive" というタイトルで、Amazon Redshift でシステムテーブル/ビューを使ってシステマチックにクエリのボトルネックを特定・チューニングする手法を発表しましたが、最近のすばらしいアップデートを共有します。
SYS_QUERY_DETAIL に plan_node_id 列が追加された
これまで クエリのボトルネック分析で、どのセグメント、ステップで時間を要しているか特定した後、実行計画のどのオペレーションと対応するかはオペレーションの名前で紐づける必要がありましたが、SYS_QUERY_DETAIL に plan_node_id 列が追加され機械的に実行計画 SYS_QUERY_EXPLAIN の plan_node_id 列と結合してマッピングできるようになりました。
tpch_100gb awsuser 20241204_15:27:57 =# select a.query_id, a.stream_id, a.segment_id, a.step_id, a.step_name, a.duration, a.input_bytes, a.output_bytes, a.input_rows, a.output_rows, b.plan_parent_id, substring(b.plan_node,1,100) plan_node from sys_query_detail a, sys_query_explain b where a.query_id = 3178 and a.query_id = b.query_id and b.plan_node_id = a.plan_node_id order by a.query_id, a.stream_id, a.segment_id, a.step_id; query_id | stream_id | segment_id | step_id | step_name | duration | input_bytes | output_bytes | input_rows | output_rows | plan_parent_id | plan_node ----------+-----------+------------+---------+------------+----------+-------------+--------------+------------+-------------+----------------+----------------------------------------------------------------------------------------------- 3178 | 0 | 0 | 0 | scan | 1612796 | 0 | 269433360 | 10745485 | 7484260 | 5 | -> XN Seq Scan on lineitem (cost=0.00..120535.76 rows=8035718 width=40) 3178 | 0 | 0 | 2 | distribute | 1612796 | 0 | 179622240 | 0 | 7484260 | 2 | -> XN Hash Join DS_DIST_INNER (cost=172290.28..9643380731.17 rows=8035718 width=56) 3178 | 0 | 1 | 0 | scan | 1627169 | 0 | 179622240 | 0 | 7484260 | 2 | -> XN Hash Join DS_DIST_INNER (cost=172290.28..9643380731.17 rows=8035718 width=56) 3178 | 0 | 1 | 2 | hash | 1627169 | 0 | 239496320 | 0 | 7484260 | 3 | -> XN Hash (cost=120535.76..120535.76 rows=8035718 width=40) 3178 | 1 | 2 | 0 | scan | 939133 | 0 | 753563993 | 20000000 | 18560685 | 3 | -> XN Seq Scan on part (cost=0.00..200000.00 rows=20000000 width=32) 3178 | 1 | 2 | 3 | hashjoin | 939133 | 0 | 0 | 0 | 7484260 | 2 | -> XN Hash Join DS_DIST_INNER (cost=172290.28..9643380731.17 rows=8035718 width=56) 3178 | 1 | 2 | 6 | aggregate | 939133 | 0 | 768 | 0 | 16 | 1 | -> XN Aggregate (cost=9643420909.76..9643420909.78 rows=1 width=56) 3178 | 2 | 3 | 0 | scan | 2445 | 0 | 768 | 0 | 16 | 1 | -> XN Aggregate (cost=9643420909.76..9643420909.78 rows=1 width=56) 3178 | 2 | 3 | 1 | return | 2445 | 0 | 768 | 0 | 16 | 1 | -> XN Aggregate (cost=9643420909.76..9643420909.78 rows=1 width=56) 3178 | 2 | 4 | 0 | scan | 1577 | 0 | 768 | 0 | 16 | 1 | -> XN Aggregate (cost=9643420909.76..9643420909.78 rows=1 width=56) 3178 | 2 | 4 | 1 | aggregate | 1577 | 0 | 48 | 0 | 1 | 1 | -> XN Aggregate (cost=9643420909.76..9643420909.78 rows=1 width=56) 3178 | 3 | 5 | 0 | scan | 191 | 0 | 48 | 0 | 1 | 1 | -> XN Aggregate (cost=9643420909.76..9643420909.78 rows=1 width=56) (12 rows) Time: 9170.031 ms (00:09.170)
明日今日は @tdmnishi さんの Amazon DataZone 経由で SageMaker Canvas へデータインポート #AWS - Qiita です、いってらっしゃい!
参考
「アドベントカレンダー」(Advent Calendar)とは、クリスマスまでの期間(待降節=アドベント)をより楽しく過ごすため、12月1日から24日までの間カウントダウンしていく“日めくりカレンダー”のことです。
(中略)
IT業界では、このアドベントカレンダーの風習に習って、12月1〜24日の間、何かのテーマや、何らかの制限事項(縛り)を設けてWebにコラム記事を書くというイベントを楽しむようになりました(なかには25日や年末まで続けるものもあるようです)。師走を楽しもう。技術系アドベントカレンダーの魅力とは:安藤幸央のランダウン(59) - @IT
師走を楽しもう。技術系アドベントカレンダーの魅力とは:安藤幸央のランダウン(59) - @IT