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 減らして、落ちたらフェイルオーバー先からデータコピーしてくるって運用もありなんだろうな。