配置项说明

文档写的很清楚:

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

innodb_flush_log_at_trx_commit配置相关推荐

  1. mysql数据库加载太慢_mysql千万级数据库插入速度和读取速度的调整记录

    一般情况下mysql上百万数据读取和插入更新是没什么问题了,但到了上千万级就会出现很慢,下面我们来看mysql千万级数据库插入速度和读取速度的调整记录吧. (1)提高数据库插入性能中心思想:尽量将数据 ...

  2. 通过一条语句的执行,深入理解innoDB的底层架构

    MySQL最常用的存储引擎是innodb,我们今天就借助一条更新语句的执行,了解下innodb具体是如何处理的,深入理解下它的架构. 假设更新语句是这样的: update user set name ...

  3. binlog数据库不写入binlog_MySQL数据库及InnoDB存储引擎的日志文件

    船头上迎面而来的海风特别有劲道但却总有种苦咸的味道,他睁着通红的眼睛,紧绷着嘴.尽管眼前一望无垠的海面平静如清晨的托雷维耶哈盐湖湖面,但他的心仍然翻涌着昨晚暴风雨中的激浪.这是离开陆地,在海上航行这么 ...

  4. 图解MySQL系列(2)-SQL实战研究InnoDB架构设计

    SQL实战研究InnoDB架构设计 update `user` set `name`='xxx' where `id`=1; 业务系统通过一个数据库连接发给MySQL,经过SQL接口.解析器.优化器. ...

  5. mysql探究-IOPS优化

    当使用公有云关系存储数据库服务时,经常会对IOPS做限制,导致数据库如果操作频繁,经常会达到限制,特别是inser,update,delete这类需要操作写入磁盘的.本篇讲讲IOPS是什么,为什么会高 ...

  6. Mysql5.7, 千万数据快速插入解决方案( JDBC方式, 百秒搞定!!!)

    最近在弄一件任务,要求测试一下从文本中读取数据,然后向mysql表中插入.要求用JDBC线程导入.要求效率. 环境说明: 数据量 : 10058624条  (大约一千零6万条数据,本地机器运行) 数据 ...

  7. 提高mysql插入速度的方法

    导读 作者:杨漆 16年关系型数据库管理,从oracle 9i .10g.11g.12c到Mysql5.5.5.6.5.7.8.0 到TiDB获得3个OCP.2个OCM:运维路上不平坦,跌过不少坑.熬 ...

  8. 如何实现mysql千万级数据库插入速度和读取速度

    mysql千万级数据库插入速度和读取速度的调整记录 2018.11.1 Mysql version 5.7.23 一般情况下mysql上百万数据读取和插入更新是没什么问题了,但到了上千万级就会出现很慢 ...

  9. mysql千万级数据库插入速度和读取速度的调整记录。

    (1)提高数据库插入性能中心思想:尽量将数据一次性写入到Data File和减少数据库的checkpoint 操作.这次修改了下面四个配置项:           1)将 innodb_flush_l ...

最新文章

  1. 堆(heap)和栈(stack)有什么区别??
  2. arcgis将小于0的数值设置成0.01
  3. git 查看自己秘钥_gitlab配置ssh密钥及简单使用
  4. java litjson_仿造 Gson 的自制 json 解析器
  5. ios标签控制器怎么用_带故事板的iOS标签栏控制器
  6. leetcode -- Maximum Subarray
  7. 今日GitHub热榜第一:最全中华古诗词数据库,收录30多万诗词
  8. rpg人物制作软件_RPG游戏制作教程
  9. 梯度,雅克比矩阵和海森矩阵
  10. 服务器cpu一直处于100%解决思路
  11. 计算机登录界面怎么切换用户,windows10开机界面怎么切换用户
  12. lae界面开发工具入门之介绍十四--《介绍lae在windows平台上如何打包编译》
  13. 三层交换机实现vlan间通信
  14. 你不得不知道的Visual Studio 2012(3)- 创建Windows(WPF)应用程序
  15. 微软与华盛顿大学合作研发DNA存储技术
  16. 安卓MediaPlayer源码跟读解析
  17. SIP 通话三十秒自动挂断
  18. PHP反序列化与SESSION
  19. dbeaver替换Navicat后某些网络无法连接问题解决
  20. 有啊百度知道双色球红蓝走势图

热门文章

  1. css文字下滑,CSS3 文本下落渐变动效
  2. Esper应用以及原理解析
  3. Jmeter-逻辑控制器
  4. Learning ROS: Service and Client (C++)
  5. Java使用UDP聊天程序
  6. webservice jsonp格式调用
  7. 数据库 -- 由数据库连接池引出的三种设计模式
  8. 【原创】Quartus II 实验流程说明书
  9. uboot 命令分析(一) — bootm
  10. oracle 客户端监听文件配置