innodb_flush_log_at_trx_commit配置
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,配置项说明文档写的很清楚:0如果innodb_flush_log_at_trx_commit的值为0,log buffer每秒就会被刷写日志文件到磁盘,提交事务的时候不做任何操作。1当设为默认值1的时
千家信息网最后更新 2026年11月01日innodb_flush_log_at_trx_commit配置
配置项说明
文档写的很清楚:
0
如果innodb_flush_log_at_trx_commit的值为0,log buffer每秒就会被刷写日志文件到磁盘,提交事务的时候不做任何操作。
1
当设为默认值1的时候,每次提交事务的时候,都会将log buffer刷写到日志。
2
如果设为2,每次提交事务都会写日志,但并不会执行刷的操作。每秒定时会刷到日志文件。要注意的是,并不能保证100%每秒一定都会刷到磁盘,这要取决于进程的调度。
默认值1是为了保证完整的ACID。当然,你可以将这个配置项设为1以外的值来换取更高的性能,但是在系统崩溃的时候,你将会丢失1秒的数据。设为0的话,mysqld进程崩溃的时候,就会丢失最后1秒的事务。设为2,只有在操作系统崩溃或者断电的时候才会丢失最后1秒的数据。InnoDB在做恢复的时候会忽略这个值。
刷写的概念
刷写其实是两个操作,刷(flush)和写(write),区分这两个概念(两个系统调用)是很重要的。在大多数的操作系统中,把Innodb的log buffer(内存)写入日志(调用系统调用write),只是简单的把数据移到操作系统缓存中,操作系统缓存同样指的是内存。并没有实际的持久化数据。
所以,通常设为0和2的时候,在崩溃或断电的时候会丢失最后一秒的数据,因为这个时候数据只是存在于操作系统缓存。之所以说"通常",可能会有丢失不只1秒的数据的情况,比如说执行flush操作的时候阻塞了。
总结
设为1当然是最安全的,但性能页是最差的(相对其他两个参数而言,但不是不能接受)。如果对数据一致性和完整性要求不高,完全可以设为2,如果只最求性能,例如高并发写的日志服务器,设为0来获得更高性能。
时候
数据
系统
日志
操作系统
两个
事务
性能
缓存
配置
内存
只是
文件
概念
磁盘
进程
保证
最差
清楚
重要
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技海报
互联网科技活动banner
互联网科技官网
互联网科技上市公司
互联网金融监管科技
互联网巨头投资的硬核科技
成都玖崟互联网科技有限公司乐商圈怎么样
字节跳动和互联网科技
互联网金融科技公司干啥的
宁夏科技产业互联网案例
千方科技属于互联网企业吗
青岛科技大学互联网大赛研究生
青海科技产业互联网发展
如何创新互联网科技
珠海东科互联网科技有限公司
互联网科技企业商标注意事项
众联互联网络科技
亚光科技低轨卫星互联网
平安好医生打造互联网科技医疗
山东亿川互联网科技有限责任公司
互联网的科技创新
迪茉互联网科技
智慧科技互联网
互联网巨头投资的硬核科技
博兴的互联网电子科技公司
汽车互联网创新科技园
广州智享互联网科技
艺电能源互联网科技有限公司招聘
唯美互联网科技
华人运通互联网科技公司