MySQLソリューション パフォーマンスチューニングの例 | システム監視・サーバ監視・障害監視・ネットワーク監視・システム運用・MySQLを提供

MySQLソリューション パフォーマンスチューニングの例

デフォルトパラメータファイルとの性能差

MySQLインストール時「support-files」配下に設定テンプレートファイルがいくつか用意してあります。

  • my-small.cnf:64Mバイト以下のメモリしか搭載できないサーバ向け
  • my-medium.cnf:128Mバイト程度のメモリを搭載したさまざまな用途の共有サーバで、MySQLに32M~64Mバイト程度のメモリ領域を使用できるサーバ向け
  • my-large.cnf:512Mバイトのメモリを搭載したMySQL専用サーバ向け
  • my-huge.cnf:1G~2Gバイトのメモリを搭載したMySQL専用サーバ向け
  • my-innodb-heavy-4G.cnf:4Gバイトのメモリを搭載したMySQL専用サーバでInnoDBのみ利用し、接続が少なく重いクエリを実行するMySQL

比較的大きめなシステム用のmy-huge.cnfのテンプレートにおけるパラメータ値を利用した場合と、パラメータをチューニングした場合のベンチマーク結果を示します。
ベンチマーク環境については「MySQL Enterpriseのスケーラビリティ」と同一です。
なお構成ファイルやログ配置先に関してのみ、デフォルトファイルを変更しておりますが、比較前後で変更していません。

 

【my-huge.cnf パラメータ】 ※一部抜粋
skip-locking
key_buffer = 384M
max_allowed_packet = 1M
table_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
thread_concurrency = 8
innodb_buffer_pool_size = 384M
innodb_additional_mem_pool_size = 20M
innodb_log_file_size = 100M
innodb_log_buffer_size = 8M
innodb_flush_log_at_trx_commit = 1
sync_binlog=1

変更
【チューニング後のパラメータ】 ※一部抜粋
変更箇所は赤字で記載
skip-locking
key_buffer = 1250M
max_allowed_packet = 16M
table_cache = 1024
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 64
thread_concurrency = 4
max_connections=1500
net_read_timeout=30
net_write_timeout=30
back_log=128
innodb_buffer_pool_size = 2250M
innodb_additional_mem_pool_size = 50M
innodb_log_buffer_size = 4M
innodb_thread_concurrency=8
sync_binlog=1

 

MyISAM、InnoDBともに大幅な性能改善

READ PK POINT

 

非ユニークキーの場合、主キーほど顕著な差はないが、データのムラに左右される

READ KEY POINT_LIMIT

 

パフォーマンスチューニングのポイント

パフォーマンスチューニングを効率よく行うにあたり、気をつけるべきポイントを記載します。

  • バッファ系パラメータチューニング
  • ディスクIO関連のチューニング
  • Explain文によるSQLチューニング
  • Show Statusによるメモリチューニング
  • Slow Query Logによる問題SQLの発見
  • MySQLサブクエリーのチューニング
  • InnoDBログサイズチューニング
  • クエリキャッシュチューニング
  • ネクストキーロック問題
  • クラスタインデックスを原因とするボトルネックSQL

詳細は、別途お問い合わせください。

 

お問い合わせ・お見積もりはこちら