Zenn
‼️

Aurora MySQL「I/O最適化」オプションの導入でCOMMITの待機が劇的に改善した話

2025/04/01に公開

Aurora MySQL「I/O最適化」オプションの導入でCOMMITの待機が劇的に改善した話

Aurora MySQL のパフォーマンス改善の取り組みの一環として、I/O 最適化オプションを有効化しました。その結果、COMMIT処理にかかっていた待機時間が劇的に改善し、さらに副次的な効果も多数確認できたので、今回はその内容を共有します。


📌 概要

  • 対象インスタンス: Aurora MySQL 8.0 (かなり大きいインスタンス)
  • 適用変更: I/O 最適化 オプションを有効化
  • 無停止で設定変更可能
  • 📈 COMMIT 処理の待機削減、書き込みスループット向上、レプリカラグ減少を確認

🔍 背景と課題

Aurora の Performance Insights を観察していたところ、COMMIT ステートメントが平均アクティブセッション (AAS) の大部分を占めていることが分かりました。

  • COMMIT 処理の I/O 待機を示しており、非常に目立っていました。
  • AAS が最大値の 40〜60 %に達しており、明らかにボトルネックになっていました。

⚙️ I/O最適化オプションとは?

Aurora MySQL 3(MySQL 8.0系)以降で利用できる、公式にサポートされたストレージモード です。

✅ この設定はAuroraの再起動なしで適用可能なため、本番環境でもサービス停止を伴わず導入できます。

🧠 I/O最適化時のAuroraの動作の詳細は公開されていませんが、 re:Invent 2023 の公式セッション で少し説明されています(37分頃~)。


🚨 料金に関する注意点

Aurora I/O 最適化を有効にすると、従来の Aurora Standard ストレージとは異なる料金体系が適用されます。

  • I/O リクエストごとの課金は発生しない
  • インスタンス料金がStandard比 1.3 倍に設定
  • ストレージ料金がStandard比 2.25 倍に設定

📘 詳しくは以下の公式料金ページを参照してください:
👉 Amazon Aurora の料金 – I/O Optimized ストレージについて

ポイント

  • I/O多め・スループット重視のワークロードでは I/O最適化の方がコスト効率が良いケースも多いです。
  • I/Oが少なく、容量が大きいシステムでは逆に高くつく可能性もあります。

→ 導入は、ワークロード特性も併せて検討することをおすすめします。


🚀 変更後の効果

Performance Insights の変化

Performance Insights before/after

  • COMMIT の待機はグラフ上からほぼ消滅
  • Top SQL でも、COMMIT の AAS が ほぼ 0 に!

📊 CloudWatch メトリクスの改善

✅ CommitLatency(COMMITレイテンシ)

CommitLatency

トランザクション応答時間が大幅に短縮


✅ AuroraReplicaLagMaximum(レプリカ遅延)

ReplicaLag

リードレプリカの同期遅延が解消


✅ WriteIOPS(書き込みスループット)

WriteIOPS

I/O最適化有効後に増加傾向
I/O 処理が効率化された証拠


🧠 補足:インスタンスサイズと書き込み性能

このAWS公式動画 によると、Aurora では インスタンスサイズが大きいほど書き込みパフォーマンスが高くなる ことも説明されています。

  • Aurora のログバッファや I/O スレッド数などがインスタンスサイズに比例
  • より大型インスタンスで特に I/O 最適化の恩恵が大きい

📝 おわりに

I/O最適化オプションの導入は、以下のようなワークロードに特に効果的だと感じました:

  • トランザクションが多い
  • 同時 COMMIT が頻発する
  • 書き込みレイテンシに敏感
  • レプリカの同期遅延が気になる

本番環境に導入時にサービス停止が不要
⚠️ 料金体系は変更されるので要確認

── 費用対効果の高いチューニング施策でした。


以上、思った以上に効果があったので、同様の課題を抱えている方の参考になれば幸いです。

Inventit Tech

Discussion

ログインするとコメントできます