稼働中のシステムであっても下記のコマンドを実行するだけで再起動等必要はないので、非常にお手軽に出来る。
mysql
mysql > set global innodb_flush_log_at_trx_commit = 2;
デフォルトではinnodb_flush_log_at_trx_commit = 1 になっているはず。
1に設定するとトランザクション単位でログを出力するが 2 を指定すると1秒間に1回ログファイルに出力するようになる。
そのため、マスターDBが落ちて別スレーブに切り替わる仕組みを導入していても1秒の間に発生したトランザクションは完全にもとに戻す事が出来ない。
マスターDBの死 = サービス停止 みたいに冗長構成を持たせていないのならばこの設定にしても問題はなさそう。
mysqlslapでベンチマークを測ってみた。
テストの内容としては20クライアントから計10万回のINSERT文を実行するという内容で
結果として約3倍近く速くなっている。
innodb_flush_log_at_trx_commit = 1