Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
RDS_AuroraパフォーマンスインサイトのデータをAthenaとQuickSightで見る
Search
hmatsu47
PRO
May 31, 2021
Technology
2
600
RDS_AuroraパフォーマンスインサイトのデータをAthenaとQuickSightで見る
JAWS-UG 名古屋 データ分析を学ぶ 2021/05/31
hmatsu47
PRO
May 31, 2021
Tweet
Share
More Decks by hmatsu47
See All by hmatsu47
AWS で試して学ぶ IPv6
hmatsu47
PRO
0
9
今年の MySQL/HeatWave ネタ登壇振り返り
hmatsu47
PRO
0
12
今年の DB ネタ登壇振り返り
hmatsu47
PRO
0
10
RDS/Aurora アップデート 2025
hmatsu47
PRO
0
20
YAPC::Fukuoka 2025 現地ハイブリッド参加の旅
hmatsu47
PRO
0
9
今年の FESTA で初当日スタッフ+登壇してきました
hmatsu47
PRO
0
15
攻略!Aurora DSQL の OCC(楽観的同時実行制御)
hmatsu47
PRO
0
9
PostgreSQL でもできる!GraphRAG
hmatsu47
PRO
0
13
Aurora DSQL のトランザクション(スナップショット分離と OCC)
hmatsu47
PRO
0
16
Other Decks in Technology
See All in Technology
Everything As Code
yosuke_ai
0
500
製造業から学んだ「本質を守り現場に合わせるアジャイル実践」
kamitokusari
0
490
Bill One 開発エンジニア 紹介資料
sansan33
PRO
4
17k
BidiAgent と Nova 2 Sonic から考える音声 AI について
yama3133
2
150
Oracle Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
3
280
Introduction to Bill One Development Engineer
sansan33
PRO
0
340
20251225_たのしい出張報告&IgniteRecap!
ponponmikankan
0
110
2025-12-27 Claude CodeでPRレビュー対応を効率化する@機械学習社会実装勉強会第54回
nakamasato
4
1.4k
AIと融ける人間の冒険
pujisi
0
110
CQRS/ESになぜアクターモデルが必要なのか
j5ik2o
0
750
2025年の医用画像AI/AI×medical_imaging_in_2025_generated_by_AI
tdys13
0
320
小さく、早く、可能性を多産する。生成AIプロジェクト / prAIrie-dog
visional_engineering_and_design
0
370
Featured
See All Featured
From π to Pie charts
rasagy
0
100
A Soul's Torment
seathinner
2
2.1k
The SEO Collaboration Effect
kristinabergwall1
0
320
How STYLIGHT went responsive
nonsquared
100
6k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.3k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
1
220
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.1k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
120
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
190
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
0
220
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
Transcript
RDS / Aurora パフォーマンスインサイトの データを Athena と QuickSight で見る JAWS-UG
名古屋 データ分析を学ぶ 2021/05/31 まつひさ(hmatsu47)
自己紹介 松久裕保(@hmatsu47) https://qiita.com/hmatsu47 名古屋で Web インフラのお守り係をしています (ほかに書くことがなくなったので省略) 2
今日の内容 • パフォーマンスインサイトとその問題点のおさらい • API 経由で S3 にデータを書き出してみる ◦ Lambda(Python)で
S3 へ • Glue クローラを使って Athena へ ◦ Athena でクエリを実行してみる • Athena から QuickSight へ ◦ QuickSight でグラフ化してみる 3
パフォーマンスインサイトとは • RDS / Aurora の負荷とその内訳を示すもの ◦ https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/USER_ PerfInsights.Overview.html •
カウンターメトリクス ◦ 性能に関係するカウンター値を個別にグラフ表示 • データベースのロード ◦ 負荷の高さと内訳をグラフ表示 4
パフォーマンスインサイトとは • RDS / Aurora の負荷とその内訳を示すもの ◦ https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/USER_ PerfInsights.Overview.html •
カウンターメトリクス ◦ 性能に関係するカウンター値を個別にグラフ表示 • データベースのロード ◦ 負荷の高さと内訳をグラフ表示 5
データベースのロード 6
データベースのロード • 合計:単位時間あたり平均コネクション数 • 内訳:待機イベント毎の所要時間 ◦ 上位 9 個(※)+ CPU
時間(緑)で計 10 個 (※)「上位 9 個」は選択期間内における上位 9 個 ◦ 正規化した SQL(文)上位 10 個の待機イベント内訳も表示可能 ▪ SQL(文)正規化 ≠ DB(テーブル)正規化 ▪ 空白・クォート等を揃え、 パラメータを「?」に置き換え • トークン化 7
待機イベント 8 時間が掛かる処理 • ログの書き出し ◦ MySQL の場合バイナリログもある • なんらかのロック・mutex(排他制御の待ち時間)
• データの書き出し • データの読み取り(ストレージから>メモリから) • クライアントの接続
問題点 • 選択期間内の上位 10 個 ≠ 対象時間の上位 10 個の場合 (※)待機イベントの場合は
CPU を含めて 10 個 ◦ 一部の待機イベント・SQL(文)が漏れる ◦ 合計値が本来より低くなる ▪ 一般的なワークロードでは SQL(文)が数十種類以上になるはず • 待機別よりも SQL 別のスライスのほうが実際の合計値から乖離しやすい 9
対策 : API 経由で書き出したものを分析する • API で値を取得する方法 ◦ https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/USER_PerfInsights. API.html
• 今回は Lambda Python で Boto3 低レベルクライアント (PI)を使って S3 に(正規化した)SQL(文)を転送 ◦ https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/pi.html ◦ S3 に転送したデータを Glue 経由で Athena から参照 ▪ さらに QuickSight でグラフ化 10
11 ① S3 転記用の Lambda 関数を作成・実行
12 https://github.com/hmatsu47/performance_insights_to_s3 (今回は lambda_function_events.py のコードを使用) https://qiita.com/hmatsu47/items/9814d5c69c136c185c41 ① S3 転記用の Lambda
関数を作成・実行
13 ② S3 に転記されたデータを確認
14 ③ Athena でワークグループを作成し、データソースを接続
15 ④ Glue クローラを追加・実行
16 ④ Glue クローラを追加・実行
17 ⑤ Athena でクエリを実行
18 ⑥ QuickSight で Athena をソースとするデータセットを作成
19 ⑦ QuickSight でデータセットを編集
20 ⑦ QuickSight でデータセットを編集(日付フィールドが文字列のままだと都合が悪いので編集して日付形式へ)
21 ⑦ QuickSight でデータセットを編集(必要な計算フィールドを追加)
22 ⑧ QuickSight でデータセットをグラフ化(ビジュアルタイプを選びフィールドを割り当て表示形式を調整)
23 ⑧ QuickSight でデータセットをグラフ化(グループ化フィールド変更)
24 ⑧ QuickSight でデータセットをグラフ化(別グラフ追加)
まとめ • API で書き出したデータを使うと細部を可視化可能 ◦ RDS のマネジメントコンソールでは表示できない部分も • ただし限界はある ◦
負荷が高い SQL(文)の抽出とチューニングにはある程度使える ◦ 遅い原因が不明な SQL(文)では待機イベントの抽出が必要だ が、SQL(文)を特定してその待機イベントを調査…のような使 い方がしづらい ▪ 多くのケースで秒単位のデータが必要だが、書き出しの負担が大きい ◦ API にはレートリミットがある 25