Mysql innodb_flush_log_trx_commit 简单调优
2015-09-08 15:27
585 查看
1 InnoDB存储引擎简介
2 Innodb引擎体系结构
3 innodb_flush_log_trx_commit
4 innodb_flush_log_trx_commit 小结
数据多版本读取
锁定机制的改进
实现外键功能
有表空间的概念
表空间分为两种形式
共享表空间,所有数据都被存放在同一个表空间(一个或多个数据文件)中
独享表空间,每个表的数据和索引都存放在一个单独的 .ibd文件中
支持事务安全
事务安全性主要是通过在线redo日志和记录在表空间的undo信息来保证的。
Redo日志中记录了innoDB所做的所有物理变更和事务信息
通过 innodb_log_group_home_dir 更改日志的存放位置
通过 nnodb_log_files_in_group 设置日志的数量
除了MyISAM外,使用最为广泛的存储引擎,由第三方公司开发,和mysql遵守相同的开源许可协议。
上图箭头指向为日志文件存储机制。
即这个流程的写入策略: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崩溃或者外部断电,会丢失上一秒所有事物数据。
参数 2 适合安全性有要求,丢失一点事物数据,复制延迟都可以接受,操作系统损坏才可能丢失数据。
参数 3 适合安全性要求少,丢失一部分数据,延迟复制也可以接受,比如:日志性业务
2 Innodb引擎体系结构
3 innodb_flush_log_trx_commit
4 innodb_flush_log_trx_commit 小结
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 适合安全性要求少,丢失一部分数据,延迟复制也可以接受,比如:日志性业务
相关文章推荐
- MySQL技术之旅--随意写在前面的话
- MySQL允许远程连接的设置总结
- mysql limit使用方法
- MySQL字符串函数substring:字符串截取
- MYSQL命令
- mysql主主关系配置
- MySQL索引类型&建立索引的时机&索引的不足之处
- 命令行修改MySQL数据库密码
- MySQL CMake参数说明手册
- MYSQL-统计查询
- mysqli
- 解决您配置文件中的设置 (空密码的 root) 与 MySQL 默认管理员账户对应。
- 安装hive后使用mysql作为数据库无法正常启动问题
- MyBatis+MySQL 返回插入的主键ID
- MYSQL的三种注释
- 【R】R语言windows下连接MySQL
- 一次mysql的查询索引的优化
- [MySql] - 数据库备份还原
- Mysql官方文档翻译 -- 10.1.3.2 Database字符集和字符列排序规则
- 完全卸载mysql(停止服务、卸载相关程序、删除注册表