innodb_flush_log_at_trx_commit
log_buffer からハードディスクへのトランザクションログの書き込みタイミングを指定
table:value
0 log_buffer は秒あたり 1 回ログファイルに書き込まれる
write() + fdatasync()
コミット時には何も実施されない
ディスクへのフラッシュはファイルディスクリプタで実行
最速
1 コミット時に log_buffer はログファイルに書き込まれる
システムコール write() 後にシステムコール fdatasync() を実行して、確実にハードディスクに書き込む
真の ACID
ディスクへのフラッシュはファイルディスクリプタで実行
遅い
2 個々のコミット時に log_buffer はファイルディスクリプタに非同期書き込まれる
ディスクとの同期は毎秒 1 回
/private-renoretriever/innodb flush log at trx commit によるトランザクションログ書き込みタイミング
通常は1 で運用し、より安全にする場合には innodb_doublewrite も有効にすると良い
1 以外で障害が発生した場合には最悪 1 秒間(2 なら innodb_flush_log_at_trx_timeout で指定した時間) のトランザクションがハードディスクに書き込まれない可能性がある
#MySQL