innodb_flush_log_at_trx_commit配置
发表于:2024-11-17 作者:千家信息网编辑
千家信息网最后更新 2024年11月17日,配置项说明文档写的很清楚:0如果innodb_flush_log_at_trx_commit的值为0,log buffer每秒就会被刷写日志文件到磁盘,提交事务的时候不做任何操作。1当设为默认值1的时
千家信息网最后更新 2024年11月17日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安全错误
数据库的锁怎样保障安全
烽火 网络安全
无盘 服务器系统
阿里的服务器代码是多少
千图创造软件开发
我的世界服务器高级附魔书怎么用
徐州订制软件开发
cucm服务器
如何降低网络安全级别
世界第五届互联网大会黑科技
德国网络安全专家
网络安全事件警示我们
数据库中关闭窗体的宏
建设网络安全精英
广州网络安全事业单位
小米查云端数据库
美国婕斯根服务器
智能终端软件开发课题
互联网对科技发展的巨大影响
苹果自家数据库
提供服务好的聊天软件开发
服务器系统更新
网络安全兴起的原因
金华市大河马网络技术
莱西ios软件开发哪家好
个人软件开发者大会
网络安全社会体系建设
上海应用软件开发公司哪家强
大庆直销软件开发
日订单超80万数据库
门户网站服务器选择