博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mysql innodb_flush_log_trx_commit 简单调优
阅读量:2242 次
发布时间:2019-05-09

本文共 1316 字,大约阅读时间需要 4 分钟。

1、 InnoDB存储引擎简介

  • 支持事务安全
  • 数据多版本读取
  • 锁定机制的改进
  • 实现外键功能
  • 有表空间的概念
    • 表空间分为两种形式
      • 共享表空间,所有数据都被存放在同一个表空间(一个或多个数据文件)中
      • 独享表空间,每个表的数据和索引都存放在一个单独的 .ibd文件中
  • 支持事务安全

    • 事务安全性主要是通过在线redo日志和记录在表空间的undo信息来保证的。
    • Redo日志中记录了innoDB所做的所有物理变更和事务信息
    • 通过 innodb_log_group_home_dir 更改日志的存放位置
    • 通过 nnodb_log_files_in_group 设置日志的数量
  • 除了MyISAM外,使用最为广泛的存储引擎,由第三方公司开发,和mysql遵守相同的开源许可协议。


2、 Innodb引擎体系结构

体系结构

  • 上图箭头指向为日志文件存储机制。

3、 innodb_flush_log_trx_commit

  • innodb_flush_log_trx_commit 是控制磁盘写入策略的参数

    即这个流程的写入策略:log_buffer - - -> log_file_cache(os cache) - - -> bin_log_file

  • innodb_flush_log_trx_commit 有三个参数: 0, 1 , 2

    • 默认为1:

      • log_buffer - - - 实时- - -> log_file_cache - - -实时- - -> log_file
      • 每次事物提交,Mysql都会把log_buffer的数据写入log_file_cache,并实时 flush (刷到磁盘中)
      • 频繁的IO操作,速度最慢,mysql性能比较低,但是最安全,mysql崩溃或者外部断电,只有可能丢失一个语句或者一个事务。
    • 设置为2:

      • log_buffer - - -实时- - -> log_file_cache - - -每秒一次- - -> log_file
      • 每次事物提交,Mysql都会把log_buffer的数据写入log_file_cache,并每隔1秒 flush (刷到磁盘中)
      • 相对较少的IO操作,速度较快,mysql性能较高,比较安全,只有在操作系统崩溃或者外部断电的情况下,上一秒所有事物数据才可能丢失。
    • 设置为0:

      • log_buffer - - -每秒一次- - -> log_file_cache - - -实时- - -> log_file
      • Mysql会把log_buffer的数据每秒一次写入log_file_cache,并实时 flush(刷到磁盘中)
      • 相对最少的IO操作,速度最快,mysql性能最高,但是安全性最低,mysql崩溃或者外部断电,会丢失上一秒所有事物数据。

4、 innodb_flush_log_trx_commit 小结

  • 参数 1 适合安全性要求非常高,且磁盘IO读写能力足够支持的业务。如:订单, 交易, 充值,支付系统。
  • 参数 2 适合安全性有要求,丢失一点事物数据,复制延迟都可以接受,操作系统损坏才可能丢失数据。
  • 参数 3 适合安全性要求少,丢失一部分数据,延迟复制也可以接受,比如:日志性业务
你可能感兴趣的文章
google app api相关(商用)
查看>>
linux放音乐cd
查看>>
GridView+存储过程实现'真分页'
查看>>
flask_migrate
查看>>
解决activemq多消费者并发处理
查看>>
UDP连接和TCP连接的异同
查看>>
hibernate 时间段查询
查看>>
java操作cookie 实现两周内自动登录
查看>>
Tomcat 7优化前及优化后的性能对比
查看>>
Java Guava中的函数式编程讲解
查看>>
Eclipse Memory Analyzer 使用技巧
查看>>
tomcat连接超时
查看>>
谈谈编程思想
查看>>
iOS MapKit导航及地理转码辅助类
查看>>
检测iOS的网络可用性并打开网络设置
查看>>
简单封装FMDB操作sqlite的模板
查看>>
iOS开发中Instruments的用法
查看>>
强引用 软引用 弱引用 虚引用
查看>>
数据类型 java转换
查看>>
"NetworkError: 400 Bad Request - http://172.16.47.117:8088/rhip/**/####t/approval?date=976
查看>>