原文:http://blog.itpub.net/22664653/viewspace-1063134/
innodb_flush_log_at_trx_commit和sync_binlog 两个参数是控制MySQL 磁盘写入策略以及数据安全性的关键参数。本文从参数含义,性能,安全角度阐述两个参数为不同的值时对db 性能,数据的影响.
一 参数意义
innodb_flush_log_at_trx_commit

如果innodb_flush_log_at_trx_commit设置为0,log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行.该模式下,在事务提交的时候,不会主动触发写入磁盘的操作。
如果innodb_flush_log_at_trx_commit设置为1,每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去.
如果innodb_flush_log_at_trx_commit设置为2,每次事务提交时MySQL都会把log buffer的数据写入log file.但是flush(刷到磁盘)操作并不会同时进行。该模式下,MySQL会每秒执行一次 flush(刷到磁盘)操作。

注意:
由于进程调度策略问题,这个“每秒执行一次 flush(刷到磁盘)操作”并不是保证100%的“每秒”。
sync_binlog
sync_binlog 的默认值是0,像操作系统刷其他文件的机制一样,MySQL不会同步到磁盘中去而是依赖操作系统来刷新binary log。
当sync_binlog =N (N>0) ,MySQL 在每写 N次 二进制日志binary log时,会使用fdatasync()函数将它的写二进制日志binary log同步到磁盘中去。
注:
如果启用了autocommit,那么每一个语句statement就会有一次写操作;否则每个事务对应一个写操作。
根据上述描述,我做了一张图,可以方便大家查看。
  
二 性能
两个参数在不同值时对db的纯写入的影响表现如下:
测试场景1 
innodb_flush_log_at_trx_commit=2 
sync_binlog=1000
测试场景2 
innodb_flush_log_at_trx_commit=1 

sync_binlog=1000
测试场景3 
innodb_flush_log_at_trx_commit=1 

sync_binlog=1
测试场景4
innodb_flush_log_at_trx_commit=1

sync_binlog=1000
测试场景5 
innodb_flush_log_at_trx_commit=2 

sync_binlog=1000 
场景 TPS
场景1 41000
场景2 33000
场景3 26000
场景4 33000
由此可见,当两个参数设置为双1的时候,写入性能最差,sync_binlog=N (N>1 ) innodb_flush_log_at_trx_commit=2 时,(在当前模式下)MySQL的写操作才能达到最高性能。
三 安全
当innodb_flush_log_at_trx_commit和sync_binlog  都为 1 时是最安全的,在mysqld 服务崩溃或者服务器主机crash的情况下,binary log 只有可能丢失最多一个语句或者一个事务。但是鱼与熊掌不可兼得,双11 会导致频繁的io操作,因此该模式也是最慢的一种方式。
当innodb_flush_log_at_trx_commit设置为0,mysqld进程的崩溃会导致上一秒钟所有事务数据的丢失。
当innodb_flush_log_at_trx_commit设置为2,只有在操作系统崩溃或者系统掉电的情况下,上一秒钟所有事务数据才可能丢失。
双1适合数据安全性要求非常高,而且磁盘IO写能力足够支持业务,比如订单,交易,充值,支付消费系统。双1模式下,当磁盘IO无法满足业务需求时 比如11.11 活动的压力。推荐的做法是 innodb_flush_log_at_trx_commit=2 ,sync_binlog=N (N为500 或1000) 且使用带蓄电池后备电源的缓存cache,防止系统断电异常。
四 小结
系统性能和数据安全是业务系统高可用稳定的必要因素。我们对系统的优化需要寻找一个平衡点,合适的才是最好的,根据不同的业务场景需求,可以将两个参数做组合调整,以便是db系统的性能达到最优化。
参考文章
http://dev.mysql.com/doc/refman/5.1/en/innodb-parameters.html#sysvar_innodb_flush_log_at_trx_commit
http://dev.mysql.com/doc/refman/5.1/en/replication-options-binary-log.html#sysvar_sync_binlog

转载于:https://www.cnblogs.com/liujiacai/p/7802574.html

(转)【MySQL】sync_binlog innodb_flush_log_at_trx_commit 浅析相关推荐

  1. mysql innodb trx_如何区分MySQL的innodb_flush_log_at_trx_commit和sync_binlog

    innodb_flush_log_at_trx_commit和sync_binlog  两个参数是控制MySQL磁盘写入策略以及数据安全性的关键参数. show variables like &quo ...

  2. mysql 参数 innodb_flush_log_at_trx_commit

    问题,项目后台有一个定时任务,需要跑一批数据,跑完后存入到一个表里,用来做信息查询,数据大,逻辑复杂,耗时,多线程处理数据? 解答:以为程序的问题,把所有的关键点步骤都加上了日志,拿开发环境的日志看, ...

  3. mysql sync_binlog 作用_mysql 中 sync_binlog 参数作用

    sync_binlog":这个参数是对于MySQL系统来说是至关重要的,他不仅影响到Binlog对MySQL所带来的性能损耗,而且还影响到MySQL中数据的完整性.对于"sync_ ...

  4. windows 环境下mysql的操作浅析

    windows 环境下mysql的操作 一,MYSQL 的连接 在下载安装好mysql后,访问数据控之前我们需要先连接数据库: 建立一个connect.php 的文件: (面向过程) <?php ...

  5. Mysql之AUTO_INCREMENT浅析

    文章目录 术语 锁模式 注意点 总结 参考链接 AUTO_INCREMENT用于为表中的列设置一个自增序列,在非集群模式下,用它来为主键列自动生成值是一件很方便的事.并且,Mysql提供了一系列的锁机 ...

  6. MySQL事务原理浅析

    前言 ​ 因为自己对数据的可靠性,可用性方面特别感兴趣,所以在MySQL事务方面看了很多资料,也看了很多博客,所以想到自己也写一篇博客整理整理自己所学内容,尽量用自己的语言解释得通俗易懂. 事务经典场 ...

  7. 技术分享 | MySQL : SSL 连接浅析

    作者:胡呈清 爱可生 DBA 团队成员,擅长故障分析.性能优化,个人博客:https://www.jianshu.com/u/a95ec11f67a8,欢迎讨论. 本文来源:原创投稿 *爱可生开源社区 ...

  8. linux创建mysql视图,MySQL视图入门浅析

    一. 什么是视图 视图是一种虚拟存在的表,行和列数据来自,定义视图的查询中使用的表,并且是在使用视图时动态生成的.优势有: 简单: 使用视图的用户完全不需要关心后面对应的表的结构,关联条件,筛选条件. ...

  9. mysql 5.1 innodb trx_mysql 优化innodb_flush_log_at_trx_commit的案例介绍

    mysql 优化innodb_flush_log_at_trx_commit的案例介绍,供大家学习参考. 问题描述: Win7上装了一个MYSQL,需要向表中插入160多万条数据,SQL文件大概126 ...

最新文章

  1. JAX_WS 2.2 规范的webservices客户端实现(Axis2,Cxf)
  2. 福州java培训哪里好_南京Java培训哪家好?
  3. VMware 当中出现:无法将 Ethernet0 连接到虚拟网络VMnet8的问题
  4. 基于R语言的梯度推进算法介绍
  5. 201671010406 丁家辉《英文文本统计分析》结对项目报告
  6. Python+matplotlib使用雷达图技术绘制五角星
  7. head标签中到底可以放什么?
  8. DPDK初始化分析(一)
  9. php扩展ui,jQuery UI 扩展小部件
  10. python小技巧(初学者适用)
  11. 网页前端:JavaScript编程
  12. 《SQL基础教程》((日)MICK)PDF
  13. 刚刚,陶哲轩惨遭3个物理学家狠狠打脸,一条数学公式或将引起教科书改革
  14. 基于微型计算机系统的实时时钟设计,基于单片机的DS12C887时钟芯片应用研究
  15. 探花交友_第7章-完善消息功能以及个人主页
  16. python 网格策略_Python版简单网格策略
  17. 《蹭课神器》Alpha版使用说明
  18. JFinal解决IE浏览器下载问题
  19. android 视频大小压缩,Android视频压缩(亲测有效)方便简单易用
  20. 跟尤雨溪一起解读Vue3源码笔记- Vue Mastery

热门文章

  1. Optional Chaining 进入 ES2020,不用满屏`x x.yyy`了
  2. 逐步创建ASP.NET Core 2.2应用程序
  3. NumSharp v0.6.5 .NET矩阵计算库,与TensorFlow.NET无缝融合
  4. blob js 下载word乱码_这几个相见恨晚的PDF转换成Word技巧,请收好
  5. spring security oauth2_SpringBoot2 整合OAuth2实现统一认证
  6. android升序降序按钮,创建一个按钮,将排序MYSQL查询升序和降序
  7. mybatis-plus 逻辑删除
  8. 正弦定理和余弦定理_高三 | 数学必修五正弦定理和余弦定理应用举例考点梳理...
  9. linux判断网站被采集,网站被采集的几个处理方法(非技术)
  10. python复制查题_python面试题(复制的)