MySQL

2015-03-26, mysql

MySQLのチューニング(更新系サーバ編)

さくらのクラウド、1コア1GメモリのマシンにMySQL5.6をインストールし検証しました。my.cnfを編集してパラメタを変更しながら、mysqlslapの結果を確認します。

1. buffer_poolとlog_fileを大きめに割り当てた場合

/etc/my.cnf
innodb_buffer_pool_size = 500M
innodb_log_file_size = 500M
# mysqlslap --no-defaults --concurrency=50 --auto-generate-sql --auto-generate-sql-add-autoincrement --auto-generate-sql-load-type=mixed --auto-generate-sql-write-number=10000 --engine=innodb --number-of-queries=30000

Benchmark
Running for engine innodb
Average number of seconds to run all queries: 4.120 seconds
Minimum number of seconds to run all queries: 4.120 seconds
Maximum number of seconds to run all queries: 4.120 seconds
Number of clients running queries: 50
Average number of queries per client: 600

2. デフォルトの値(1より小さめ)を与えた場合

/etc/my.cnf
innodb_buffer_pool_size = 128M
innodb_log_file_size = 48M
# mysqlslap --no-defaults --concurrency=50 --auto-generate-sql --auto-generate-sql-add-autoincrement --auto-generate-sql-load-type=mixed --auto-generate-sql-write-number=10000 --engine=innodb --number-of-queries=30000
Benchmark
Running for engine innodb
Average number of seconds to run all queries: 3.973 seconds
Minimum number of seconds to run all queries: 3.973 seconds
Maximum number of seconds to run all queries: 3.973 seconds
Number of clients running queries: 50
Average number of queries per client: 600

小さな値を設定した方が速いんですね。確かに、SELECTによる参照が多い場合は、メモリ空間を大きく活用する方がメリットがありますが、データの書き込みが多い場合、下手に大きなキャッシュ空間を用意しても持て余す(管理のコストだけが増大する)状態になってしまっているのではないかと推測します。

3. おまけ
CentOS標準の5.1でも同じベンチマークを走らせてみました。mysqlslapの仕様から違うのかな?と思えるくらい結果が異なります。innodb_log_file_sizeを変更したら手作業でログファイルを消さないといけないですし、何かと様子が違っているようです。

# mysqlslap --no-defaults --concurrency=50 --auto-generate-sql --auto-generate-sql-add-autoincrement --auto-generate-sql-load-type=mixed --auto-generate-sql-write-number=10000 --engine=innodb --number-of-queries=30000
Benchmark
Running for engine innodb
Average number of seconds to run all queries: 13.368 seconds
Minimum number of seconds to run all queries: 13.368 seconds
Maximum number of seconds to run all queries: 13.368 seconds
Number of clients running queries: 50
Average number of queries per client: 600

参考URL

この記事は役に立ちましたか?