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
2025年のデザインシステムとAI 活用を振り返る
leveragestech
0
750
産業的変化も組織的変化も乗り越えられるチームへの成長 〜チームの変化から見出す明るい未来〜
kakehashi
PRO
1
410
202512_AIoT.pdf
iotcomjpadmin
0
190
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
5
60k
人工知能のための哲学塾 ニューロフィロソフィ篇 第零夜 「ニューロフィロソフィとは何か?」
miyayou
0
400
迷わない!AI×MCP連携のリファレンスアーキテクチャ完全ガイド
cdataj
0
360
「リリースファースト」の実感を届けるには 〜停滞するチームに変化を起こすアプローチ〜 #RSGT2026
kintotechdev
0
730
小さく、早く、可能性を多産する。生成AIプロジェクト / prAIrie-dog
visional_engineering_and_design
0
370
AIエージェントを5分で一気におさらい!AIエージェント「構築」元年に備えよう
yakumo
1
140
Introduction to Bill One Development Engineer
sansan33
PRO
0
340
Bill One 開発エンジニア 紹介資料
sansan33
PRO
4
17k
AIと融ける人間の冒険
pujisi
0
110
Featured
See All Featured
Reality Check: Gamification 10 Years Later
codingconduct
0
2k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.3k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Accessibility Awareness
sabderemane
0
33
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
140
Designing Experiences People Love
moore
143
24k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.8k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
110
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
54
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.1k
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