2026年8月2日

2026年8月2日

MySQLのmy.cnfでパフォーマンスチューニングする方法

はじめに

MySQLは多くのWebアプリケーションで使用されるデータベースシステムです。パフォーマンスの最適化は、ウェブサイトやアプリケーションのスループットと応答時間に直接影響を与えます。my.cnfファイルを編集することで、MySQLサーバーのパフォーマンスを向上させることができます。

症状・背景

このテーマが必要になる主な場面は以下の通りです:

  • サーバー上のMySQL負荷が高まり、応答時間が長くなる場合
  • Webアプリケーションのパフォーマンスが低下し、ページロード速度が遅い場合
  • 構造化されていないDB設定でサーバー全体のパフォーマンスが低減する状況

手順・設定方法

ステップ1: データベースの現在のパフォーマンスを確認する

# カーネルのシステムリソース使用状況を表示
top

# MySQLサーバーの現在の負荷状態を確認
mysqladmin -u root -p status

# スレッドと接続数を表示
SHOW PROCESSLIST;

# システム全体のMySQLスレッド数と接続数を表示
SHOW STATUS LIKE 'Threads%';

ステップ2: my.cnfファイルを開き、基本的なパフォーマンスタイプ設定を行う

# 現在のmy.cnfファイルを表示する(デバッグ用)
cat /etc/my.cnf

# my.cnfファイルを開く(viやnanoを使用します)
sudo nano /etc/my.cnf

# 必要なパラメータを追加または更新する
[mysqld]
innodb_buffer_pool_size = 128M
max_connections = 200
query_cache_size = 64M

ステップ3: 様々なパフォーマンスタイプ設定

# InnoDBのパラメータを調整する
innodb_buffer_pool_size = 128M # InnoDBバッファプールサイズを128MBに設定
innodb_log_file_size = 50M    # InnoDBロギングファイルサイズを50MBに設定

# クエリキャッシュのパラメータを調整する
query_cache_type = 1          # キャッシュを使用するようにする
query_cache_limit = 2M        # キャッシュされる最大クエリサイズを2MBに設定

# 接続数とスレッド数を調整する
max_connections = 200         # 最大接続数を200に設定
thread_stack = 196K           # スレッドスタックサイズを196KBに設定

# タイムアウトのパラメータを調整する
wait_timeout = 28800          # デフォルトは8時間ですが、必要なら短く設定
interactive_timeout = 28800   # インタラクティブタイムアウトも同様に設定

ステップ4: 設定を適用し、パフォーマンスを監視する

# my.cnfファイルの変更を反映させるためにMySQLを再起動します
sudo service mysql restart

# 修正後のパフォーマンスを監視するために再度ステータスを確認します
mysqladmin -u root -p status

# オプションパラメータが正しく適用されていることを確認する
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';

注意事項

  • これらの設定はサーバーの種類、使用頻度、クエリのタイプによって異なる場合があります。
  • 高負荷状況では、より大きなバッファプールサイズや更多的的设置可能
  • 调整后需要持续监控数据库性能,确保调整后的参数确实带来了预期的效果。

まとめ

1. インナーバッファプールの設定: 正確地设定InnoDB Buffer Pool大小可以显著提高读取操作的效率。

2. 最大连接数配置: 根据实际情况合理设置最大连接数以平衡并发请求和资源消耗。

3. 查询缓存优化: 合理利用查询缓存可以帮助加速频繁执行但结果较少变化的查询。

4. 系统与InnoDB参数调整: 适当调整服务器和数据库引擎的相关参数可以提升整体性能。

5. 定期监控与调优: 需要持续监测并根据实际负载情况对配置进行适当的调整优化。

相关文章:

お気軽にご相談ください

お見積りへ お問い合わせへ