Aurora MySQL「I/O最適化」オプションの導入でCOMMITの待機が劇的に改善した話
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 の変化
- COMMIT の待機はグラフ上からほぼ消滅
-
Top SQL
でも、COMMIT の AAS が ほぼ 0 に!
📊 CloudWatch メトリクスの改善
✅ CommitLatency(COMMITレイテンシ)
トランザクション応答時間が大幅に短縮
✅ AuroraReplicaLagMaximum(レプリカ遅延)
リードレプリカの同期遅延が解消
✅ WriteIOPS(書き込みスループット)
I/O最適化有効後に増加傾向
→ I/O 処理が効率化された証拠
🧠 補足:インスタンスサイズと書き込み性能
このAWS公式動画 によると、Aurora では インスタンスサイズが大きいほど書き込みパフォーマンスが高くなる ことも説明されています。
- Aurora のログバッファや I/O スレッド数などがインスタンスサイズに比例
- より大型インスタンスで特に I/O 最適化の恩恵が大きい
📝 おわりに
I/O最適化オプションの導入は、以下のようなワークロードに特に効果的だと感じました:
- トランザクションが多い
- 同時 COMMIT が頻発する
- 書き込みレイテンシに敏感
- レプリカの同期遅延が気になる
✅ 本番環境に導入時にサービス停止が不要
⚠️ 料金体系は変更されるので要確認
── 費用対効果の高いチューニング施策でした。
以上、思った以上に効果があったので、同様の課題を抱えている方の参考になれば幸いです。
Discussion