[关闭]
@llplmlyd 2020-12-14T14:17:53.000000Z 字数 580 阅读 660

innodb_flush_log_at_trx_commit

数据库 mysql参数


重做日志包括 redo undo 日志

Innodb 通过force log at commit 机制实现失误的持久性

事务提交 必须先将事务的 所有日志写入到重做日志文件中 待事务commit 才算完成
每次进行 将重做日志缓冲写入重做日志中 都需要调用一次 fsync 调用磁盘io写入磁盘,
无开启o_direct选项 所以重做日志缓冲先写入 文件系统缓冲 再调用fsync 写入磁盘
而fsync的速度 取决于磁盘的性能,而数据库事务提交的性能也就取决于磁盘的性能。

为了提高数据库事务的写入性能 数据库中的 innodb_flush_log_at_trx_commit 可以控制数据库事务的刷盘策略

parameter defination security
0 事务提交时不进行写入重做日志的操作,操作仅在master thread中进行,而master thread中 每一秒会进行重做日志的刷盘 mysql进程重启 事务丢失 不符合数据库的duration规则
1 事务提交时必须进行一次 fsync 只要事务已经提交commit就不会丢失,持久保存
2 事务提交时候 写入重做日志,但仅写入文件系统缓存当中 不落盘 mysql进程重启不丢失,操作系统重启 则丢失数据
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注