Performance Insights がMySQL 互換版 Amazon Aurora で利用できるようになりました

先日(2018/8/6)、Performance Insights がMySQL 互換版 Amazon Aurora で
利用できるようになりましたというブログポストがありました。[1]2018/6/21 から、Amazon Aurora PostgreSQL版で有効になっていた [2] のですが、
Amazon Aurora MySQL 版でも利用できるようになりました。

Performance Insight とは

「 Amazon リレーショナルデータベースサービス(RDS) の 性能問題の原因を突き止め、
解決することを容易にするより進んだデータベースモニタリング機能を提供します。」
(ブログ [1] より、勝手に意訳)

これまでの cloudwatch メトリックでもかなりたくさんの情報が得られていたのですが、
具体的に何ができるようになったのでしょうか。

実際に確認してみたいと思います。

Performance Insight の有効化

有効化自体は非常に簡単です。
Amazon Aurora の作成ウィザードの途中で以下の項目が追加されています。

また作成後、マネジメントコンソールにも以下の項目が追加されていて、簡単に
有効化できるようになっています。

Performance Insight のマニュアル [5] を参照すると、
有効化すると以下のパフォーマンススキーマが Aurora 上の MySQL で有効になります。

  • performance_schema=1
    パフォーマンススキーマを有効にする。
  • performance-schema-consumer-events-waits-current=ON
    現在の待ちイベントの収集(consumer)を有効にする。
  • performance-schema-instrument='wait/%=ON'
    待ち関連のイベント発生を有効にする。
  • performance-schema-consumer-global-instrumentation=ON
    全体的なイベント発生の収集(consumer)を有効にする。
  • performance-schema-consumer-thread-instrumentation=ON
    スレッド単位のイベント発生の収集(consumer)を有効にする。

各項目の詳細については MySQL [3] のマニュアルを参照してください。

Performance Insight を見てみる

次に画面を見てみます。作ったばかりなので、何も表示されません。なんだかわかりません。

仕方がないので、mysqlslap [4] で適当に負荷を発生させてみることにします。
mysqlslap の詳細については、本稿の範囲を超えるので省略します。

しばらく負荷をかけているとそれらしきグラフが表示されました。

グラフの右側にある slice を変更すると wait,sql,host,user 毎のグラフが
出力されるようになります。

何で待ちが発生しているかが積み上げグラフで表示されます。
どうも io/aurora_redo_log_flush の成分が多いようです。
Insert が多いからでしょう。

ここで下のパネルから SQL タブを選択してみます。想定通り、INSERT 成分が多いことが
確認できます。

ある程度クエリも集約してくれているようです。クエリをクリックすると、
さらに個別のクエリが表示されます。

ホスト別でも負荷状況が確認できます。

ホストの横のチェックボックスをクリックすると、ホスト毎のグラフが表示されます。
問題のあるホストを特定するのに役立ちそうです。

DBのユーザ単位でも同じことができます。下のパネルのユーザタブをクリックします。

master ユーザで絞り込みました。

グラフの右隣りにある項目を選択することで、特定の項目だけグラフ表示できます。
以下の例では、選択した INSERT 分では io/aurora_redo_log_flush が多いことが
わかります。

さらに画面右の項目と、下パネルの項目を組み合わせて表示を絞り込むこともできます。
以下の例では INSERT 文と、io/table/sql/handler を組み合わせています。

以前は同等のことを実施しようとすると、パフォーマンススキーマのデータとクエリログ
を突き合わせてうーん何だろうとやるか、本番よりも強力なDBサーバを用意して解析する
という本末転倒な作業が必要でしたが、Performance Insights があれば性能問題に
大して迅速かつ適切な対処が可能になるでしょう。

[1] (1, 2) Performance Insights is Available for Amazon Aurora with MySQL Compatibility
[2] Amazon RDS Performance Insights is now generally available
[3] MySQL 5.6 リファレンスマニュアル 22.11 パフォーマンススキーマコマンドオプション
[4] MySQL 5.6 リファレンスマニュアル 4.5.7 mysqlslap - 負荷エミュレーションクライアント
[5] Amazon Relational Database Service (RDS) User Guide Enabling Performance Insights

投稿者プロフィール

スカイブロガー

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.