6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ZOZOAdvent Calendar 2024

Day 7

Aurora MySQLにおけるクエリの改善ステップ

Last updated at Posted at 2024-12-07

これは ZOZO Advent Calendar 2024 カレンダー Vol.10 の 7日目の記事です

現在、自分が所属しているチームでは、Aurora MySQLを使ったマイクロサービスの運用を行っています。マイクロサービスの性能を維持・向上するためには、データベースのクエリチューニングが欠かせません。

今回は、普段自チームで実践しているクエリチューニングの改善ステップをご紹介します。

  1. 対象SQLの特定
  2. 実行計画の確認・問題点の把握
  3. 改修案の検討・検証
  4. 本番リリース・経過観察

1. 対象SQLの特定

パフォーマンスの悪いクエリを特定するために、以下のツールを活用します。

Slow Query Log

  • ログを出力することで、特定の時間帯に発生するパフォーマンス問題も把握しやすくなります。
SET GLOBAL slow_query_log = 1;
SET GLOBAL long_query_time = 1;  -- 1秒以上のクエリを記録

Datadog APM / Database Monitoring(DBM)

  • Datadogを使用して、API単位やクエリ単位で遅いクエリを特定します。
    • APIベース(Datadog APM):遅いAPIエンドポイントから問題のクエリを絞り込みます。
    • クエリベース(Database Monitoring(DBM):データベース全体で遅いクエリを監視します。
  • 以下の記事でのように、私のチームも以下ブログで紹介しているような形でDBおよびクエリの状況をDBMで見れるようにしています。

参考:Splunkと Datadog Database Monitoringを用いたDBパフォーマンスの可視化

Performance Insights

  • AWSのGUIを確認して、アクティブセッション上位のSQLは常に確認するようにしています。
  • インスタンスサイズによってはPerformance Insightsが使えないこともありますが、可能な限り活用するようにしています。

参考:AWS Performance Insights

サービス要件に満たしていないクエリがないか、日々確認・スロークエリを発見したらすぐにチューニングの検討を始めます。

2. 実行計画の確認・問題点の把握

  • 対象SQLが見つかったら、実行計画を確認し、問題点を洗い出します。
  • EXPLAINステートメントでアクセスパターンやインデックスの利用状況を確認します。
  • 実行計画の見方や分析方法についてはここでは割愛しますが、詳細な分析を行い、クエリのボトルネックを特定します。

3. 改修案の検討・検証

  • 実行計画から得た情報をもとに、以下のアプローチでクエリを改善します。
    • インデックス最適化
    • 結合の最適化:駆動表の選択や不要な結合の見直し
    • リードモデル(参照系の場合は、そのクエリの参照に特化したテーブルを作成するなどの対応をする)

4.本番リリース・経過観察

  • 改善したクエリを本番にリリースし、以下のツールで経過観察を行います。

Datadog APM / Database Monitoring(DBM)

  • Datadog APM:遅いAPIエンドポイントのレスポンス改善を確認します。
  • Database Monitoring(DBM):クエリの実行時間やデータベース負荷を監視し、改善効果を検証します。

確認ポイント

  • 1〜2週間の間、対応前後のパフォーマンスを比較
    • 効果が見られれば対応終了。改善が不十分なら、再度1.対象SQLの特定から改善サイクルを回します。

最後に

  • ZOZOTOWNを支える重要なサービスを運用する中で、データベースのパフォーマンスは常に意識しています。
  • 日々の地道な監視と改善のサイクルを回し続けることで、安定したサービス提供を実現しています。
6
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
6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?