LoginSignup
0
0

More than 3 years have passed since last update.

AWS RDS(mysql)のメジャーバージョンアップでパフォーマンス劣化にハマった話

Last updated at Posted at 2020-12-23

先日、某運用サービス環境(商用です...)のデータベース(MySQL)のバージョン5.5がサポート終了なる死刑宣告を受け急遽、エンジンのメジャーバージョンアップを行うこととなりました。

商用サービスですので、まずは軽く各メジャーバージョンの仕様変更ポイントを確認、検証向けの環境で予行演習と動作検証を行いました。

疎通と端末アプリに特異動作はみられず、DBのバイタルにも特に問題が見られなかったため、商用適用作業は完了。

しかし数日後、特定の画面表示タイミングで大幅なパフォーマンス劣化が報告され調査開始。

サーバモジュール、端末アプリ双方には特段異常を確認できず、クラウド上の管理コンソールに出力されるスロークエリにも特に出力なし...

念のためDBにターミナル接続しスロークエリを直接確認したところ、ポロポロと軒並み5秒以上コストがかかっているクエリを特定しました。
実行計画をexplainコマンドで確認すると、インデックスの使われ方、結合順に以前と明らかな差分。
テーブルのデータ断片化解消や統計情報の再計算にとる実行計画の変化、そもそものインデックスの貼り方などをチェック、検証しました。

参考)https://techblog.yahoo.co.jp/entry/2020052530001949/

そうこうしても実行計画には特に変化なし、、そしてオプティマイザ周りの情報を収集しているうちに、、見つけました ... optimizer_switch の 「condition_fanout_filter」と「deriverd_merge」。
※ deriverd_merge の公式説明から実行計画の変化をイメージするのは難しい… X-(

結論)インデックスの貼り方、表の結合方法、オプティマイザ周りの仕様変更には気をつけて。

以上です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0