innodb_flush_log_at_trx_commit配置
admin
2023-05-22 22:42:55
0

配置项说明

文档写的很清楚:

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来获得更高性能。


相关内容

热门资讯

国企举报前高管利用职务便利侵吞... 2013年,北京国润水清环境工程有限公司(以下简称“国润公司”)通过招商引资,与当地政府签订郑州市上...
原创 三... 近日,中国移动宣布构建 AI‑eSIM 多生态智能服务体系,推出 “流量 + 词元 + 智能体” 融...
河南省纪委监委:李涛被查 据周口市纪委监委消息:周口市港航管理局党组成员、副局长李涛涉嫌严重违纪违法,目前正接受周口市纪委监委...
郑州挂牌两宗宅地,底价5.84... 【大河财立方消息】 5月19日,郑州市自然资源和规划局公告,决定以网上挂牌方式出让郑政出〔2026〕...
坚定不移沿着习近平总书记指引的... “要持之以恒加强重点流域生态保护治理,深化污染防治攻坚,筑牢生态安全屏障。”——习近平丹水北上承嘱托...
坚定不移沿着习近平总书记指引的... “要把这些中华文化瑰宝保护好、传承好、传播好。”——习近平初夏时节,洛阳偃师区,二里头夏都遗址博物馆...
“00后”厨师上门下厨 正在顾客家里做饭的“00后”厨师王展。当“00后”拎着厨具,敲开一扇扇家门,入户做饭正悄然成为一种新...
马斯克起诉OpenAI“诱骗”... 据CCTV国际时讯,当地时间5月18日,美国加利福尼亚州奥克兰的联邦法院陪审团对马斯克起诉美国开放人...
特朗普不甘:要是我加税,就没台... 【文/观察者网 柳白】“本来那些生意全是英特尔的,没有台湾什么事了。”特朗普近期在一次采访中再度剑指...
打响“河南服务”品牌丨特种鞋靴... 一双特种鞋靴,能有多硬核?“这款森林灭火作战防护靴鞋底能承受300摄氏度的高温,就算用火点燃,也能在...