InnoDB中可以通过设置变量 innodb_flush_log_at_trx_commit来提供刷盘策略,有三个值
0:事务提交后redo log buffer不写入操作系统的page cache,由后台线程每秒写入page cache并异步刷盘
1:事务提交后会把redo log buffer的数据写入page cache,并等page cache写入磁盘在返回
2:事务提交后会把redo log buffer的数据写入page cache并返回
对于值为0时,性能最好,如果mysql宕机或者服务器宕机,都会丢失1秒的数据
对于值为1时,性能最差,安全性最好,mysql或服务器宕机都不会丢失数据
对于值为2时,性能次之,mysql宕机不会丢数据,因为数据已经写入操作系统的page cache,如果操作系统宕机,则会丢失1秒的数据
值为0时:
值为1时
值为2时