はじめに
本記事は、MySQL 8.4.4 の RDS 環境において、想定利用者数が約50人のWebアプリケーション向けに、適切なカスタムパラメーターグループの設定を整理した個人用の備忘録です。
個人の備忘録程度の走り書きとなっておりますが、温かい目で見守っていただければ幸いです。
あくまで参考値として活用し、実運用ではモニタリングと併せて適宜調整が必要です。
想定環境
- 利用者数:同時接続最大50名程度
- 使用用途:一般的な読み書きありのWebアプリケーション
- インスタンスタイプ:t3.medium〜t3.large(メモリ4GB〜8GB程度)
- データベースエンジン:MySQL 8.4.4(MySQL 8.0ファミリー)
推奨カスタムパラメーター一覧
パラメーター名 | 推奨値 | 備考 |
---|---|---|
max_connections |
100 |
同時接続数の2倍程度で余裕を確保 |
innodb_buffer_pool_size |
1G〜4G |
メモリの70〜80%程度が目安(例:t3.largeなら4G) |
innodb_log_file_size |
256M〜512M |
書き込み量が多い場合に大きめ推奨 |
innodb_flush_log_at_trx_commit |
2 |
パフォーマンス優先(整合性より速度) |
table_open_cache |
512 |
頻繁にアクセスされるテーブル数に応じて調整 |
tmp_table_size |
64M |
一時テーブルが多い場合に増加推奨 |
max_allowed_packet |
64M |
大きなデータ送受信がある場合の上限調整 |
sort_buffer_size |
2M〜4M |
ORDER BY多用時に調整 |
join_buffer_size |
2M〜4M |
JOINの多いクエリ用に調整 |
設定例(AWS CLI)
aws rds create-db-parameter-group \
--db-parameter-group-name custom-mysql-844 \
--db-parameter-group-family mysql8.0 \
--description "Custom parameter group for MySQL 8.4.4"
aws rds modify-db-parameter-group \
--db-parameter-group-name custom-mysql-844 \
--parameters \
"ParameterName=max_connections,ParameterValue=100,ApplyMethod=immediate" \
"ParameterName=innodb_buffer_pool_size,ParameterValue=1073741824,ApplyMethod=immediate"
# 上記: 1073741824 = 1GB
参考画像
メモ
-
innodb_buffer_pool_size
は性能に直結する最重要パラメーター。
-
max_connections
を超過すると接続エラー(エラー1040)になるので注意。
-
slow_query_log
を有効にし、定期的にスロークエリを確認すると改善ポイントが見つかる。
まとめ
利用人数が限定された中小規模のシステムでは、MySQL の初期設定をそのまま使うのではなく、アプリケーションの特性やインスタンスのスペックに応じてチューニングすることで、応答速度や安定性が大きく向上します。
特に innodb_buffer_pool_size
と max_connections
の調整は最初に検討すべきポイントです。
本記事はその一例として記録したものであり、実際の負荷状況に応じて適宜見直してみてください...!