目次
とある日
Performance InsightsでAurora for MySQLを調査するのにあったって、調べた内容を記録したものです。
Performance Insightsとは
データベース内のパフォーマンスデータを蓄積してボトルネックを特定
基本情報
Amazon RDS での Performance Insights を使用したDB 負荷のモニタリング - Amazon Relational Database Service
- 有効化と無効化は、簡単に可能
- Performance Insights エージェントは DB ホストの限られた CPU とメモリを消費する
- DB の負荷が高い場合、エージェントはデータ収集の頻度を下げることでパフォーマンスへの影響を抑える
- 無料枠
- 7日間のデータの保持期間
- 有料枠
- 1~24ヶ月のデータの保持期間
- 料金 - Performance Insights | AWS
分析の見方
Performance Insights ダッシュボードを使用してメトリクスを分析する - Amazon Relational Database Service
Performance Insights のAWS資料
各分析内容
- カウンターメトリクス
- OSのリソース情報(CPU、Memoryなど)
- DBの統計情報(セッション数など)
- データベース負荷
- 平均アクティブセッション数(AAS)
- CPU時間と待機イベント内訳
- RDS/Aurora全てのエンジンをサポート
- ボトルネックの分析軸
分析流れ
データベース負荷で「インスタンスの最大vCPUを超えている」のものがあるかを探す。
スレッドの状態
スレッド状態を使用した Aurora MySQL のチューニング - Amazon Aurora
MySQL :: MySQL 8.0 リファレンスマニュアル :: 8.14.3 一般的なスレッドの状態
creating sort index
creating sort index
スレッド状態は、データをソートするために内部テンポラリテーブルを使用する必要があるSELECT
ステートメントを、スレッドが処理中であることを示します。
- 原因
- 最も可能性の高い原因は
ORDER BY
またはGROUP BY
演算子を使った遅いクエリ
- 最も可能性の高い原因は
- 対策
- ソートバッファサイズを増やす
MySQLのWHERE狙いのキー(インデックス)と、ORDER BY狙いのキーによるSQLの高速化 - このすみノート
第111回 MySQLのソート処理について | gihyo.jp
sending data
sending data
スレッド状態は、スレッドがクエリの行を読み取り、フィルタリングして、正しい結果セットを決定していることを示します。名前が誤解を招くのは、状態がデータを転送しており、後で送信するデータを収集して準備していないことを意味するためです。
- 原因
- 対策
- メモリ設定の確認
- 返されたデータの量をチェックする
- インデックスの使用状況確認
MySQL :: MySQL 5.6 リファレンスマニュアル :: 8.3.1 MySQL のインデックスの使用の仕組み
〆
Performance Insightsの情報一生見てられるなと思いました。
参考情報
Amazon RDS での Performance Insights を使用したDB 負荷のモニタリング - Amazon Relational Database Service
Performance Insights で Amazon RDS for MySQL をチューニングする | Amazon Web Services ブログ
Amazon Aurora MySQL のリファレンス - Amazon Aurora
初めてのPerformance Insights入門 – その3 | Amazon Web Services ブログ