innodb_flush_logs_at_trx_commit のベンチマーク
binlog の設定等によって大きく変わると思うので要注意ですが、テストによっては、これぐらい差が出ます。
hdparm -W | trx_commit | 秒 |
0 | 0 | 25.492 |
0 | 1 | 281.078 |
1 | 0 | 24.138 |
1 | 1 | 67.051 |
測定環境は MySQL 5.1.35; linux 2.6.18; x86_64。
テーブルのスキーマは、
CREATE TABLE `hoge` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `text` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=500001 DEFAULT CHARSET=utf8;
mysqlslap のパラメータは、
mysqlslap -c 20 -i 5000 -q 'insert into test.hoge (text) values ("aaa")'
(semi-sync replication 等で) failover cluster 組んでる場合は fsync 減らして、落ちたらフェイルオーバー先からデータコピーしてくるって運用もありなんだろうな。