innodb_flush_log_at_trx_commit配置
发表于:2025-01-21 作者:千家信息网编辑
千家信息网最后更新 2025年01月21日,配置项说明文档写的很清楚:0如果innodb_flush_log_at_trx_commit的值为0,log buffer每秒就会被刷写日志文件到磁盘,提交事务的时候不做任何操作。1当设为默认值1的时
千家信息网最后更新 2025年01月21日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安全错误
数据库的锁怎样保障安全
奥睿科硬盘服务器
eps数据平台试用数据库
服务器租用是啥意思
软件开发培训班到底哪家好
苏宝瑞网络技术有限公司
数据库池化
软件开发哪里兼职
崇明区会计网络技术欢迎咨询
论述如何加强数据库的安全
软件开发安装什么Linux
eucm500内部服务器错误
数据库技术大牛
汶川县非物质文化遗产数据库
瓦里安加速器服务器指的是什么
网络安全防护领导机构
数据库中的pid
广电网络技术竞赛答案
郑州办公系统软件开发
数据库的发展阶段特点
信息技术网络安全知识
戴尔服务器拆卸内部硬盘
考计算机三级数据库
上海紫鲸网络技术
dns服务器哪个好用
陕西鲲鹏服务器云服务器
产品属性数据库设计
瓦里安加速器服务器指的是什么
自动点击器此服务器出现故障
网络安全js选择题
网易版服务器能加mod吗