mysql重做日志
2015-09-06 15:21
597 查看
转自 http://blog.163.com/ji_1006/blog/static/1061234120138262841483/
Mysql默认情况下会有两个文件:ib_logfile0和ib_logfile1,这两个文件就是重做日志文件,或者事务日志。
重做日志的目的:万一实例或者介质失败,重做日志文件就能派上用场。
每个InnoDB存储引擎至少有一个重做日志文件组,每个文件组下至少有2个重做日志文件,如默认的ib_logfile0、ib_logfile1。InnoDB存储引擎先写重做日志文件1,当达到文件的最后时,会切换至重做日志文件2,当重做日志文件2也被写满时,会再被切换到重做日志文件1中。
影响重做日志的参数:
Innodb_log_file_size、innodb_log_files_in_group、innodb_log_group_home_dir影响着重做日志文件的属性。
重做日志与二进制日志的区别:
1)二进制日志会记录所有与mysql有关的日志记录,包括InnoDB等其他存储引擎的日志,而InnoDB存储引擎的重做日志只记录有关其本身的事务日志,
2)记录的内容不同,不管你将二进制日志文件记录的格式设为哪一种,其记录的都是关于一个事务的具体操作内容,而InnoDB存储引擎的重做日志文件记录的关于每个页的更改的物理情况;
3)写入的时间也不同,二进制日志文件是在事务提交前进行记录的,而在事务进行的过程中,不断有重做日志条目被写入重做日志文件中。
从日志缓冲写入磁盘上的重做日志文件的条件:
在主线程中每秒会将重做日志缓冲写入磁盘的重做日志文件中,不论事务是否提交。另一个触发这个过程是由参数innodb_flush_log_at_trx_commit控制,表示在提交时,处理重做日志的方式。
参数innodb_flush_log_at_trx_commit可设的值有0、1、2,0代表当提交事务时,并不将事务的重做日志写入磁盘上的日志文件,而是等待主线程每秒的刷新,而1和2不同的地方在于:1是在commit时将重做日志缓冲同步写到磁盘;2是重做日志异步写到磁盘,即不能完全保证commit时肯定会写入重做日志文件,只是有这个动作。
值得注意的一点:因为重做日志有个capacity变量,该值代表了最后的检查点不能超过这个阀值。
Mysql默认情况下会有两个文件:ib_logfile0和ib_logfile1,这两个文件就是重做日志文件,或者事务日志。
重做日志的目的:万一实例或者介质失败,重做日志文件就能派上用场。
每个InnoDB存储引擎至少有一个重做日志文件组,每个文件组下至少有2个重做日志文件,如默认的ib_logfile0、ib_logfile1。InnoDB存储引擎先写重做日志文件1,当达到文件的最后时,会切换至重做日志文件2,当重做日志文件2也被写满时,会再被切换到重做日志文件1中。
影响重做日志的参数:
Innodb_log_file_size、innodb_log_files_in_group、innodb_log_group_home_dir影响着重做日志文件的属性。
重做日志与二进制日志的区别:
1)二进制日志会记录所有与mysql有关的日志记录,包括InnoDB等其他存储引擎的日志,而InnoDB存储引擎的重做日志只记录有关其本身的事务日志,
2)记录的内容不同,不管你将二进制日志文件记录的格式设为哪一种,其记录的都是关于一个事务的具体操作内容,而InnoDB存储引擎的重做日志文件记录的关于每个页的更改的物理情况;
3)写入的时间也不同,二进制日志文件是在事务提交前进行记录的,而在事务进行的过程中,不断有重做日志条目被写入重做日志文件中。
从日志缓冲写入磁盘上的重做日志文件的条件:
在主线程中每秒会将重做日志缓冲写入磁盘的重做日志文件中,不论事务是否提交。另一个触发这个过程是由参数innodb_flush_log_at_trx_commit控制,表示在提交时,处理重做日志的方式。
参数innodb_flush_log_at_trx_commit可设的值有0、1、2,0代表当提交事务时,并不将事务的重做日志写入磁盘上的日志文件,而是等待主线程每秒的刷新,而1和2不同的地方在于:1是在commit时将重做日志缓冲同步写到磁盘;2是重做日志异步写到磁盘,即不能完全保证commit时肯定会写入重做日志文件,只是有这个动作。
值得注意的一点:因为重做日志有个capacity变量,该值代表了最后的检查点不能超过这个阀值。
相关文章推荐
- 源码编译安装mysql5.6报错及解决方法
- MySQL存储引擎MyISAM与InnoDB的主要区别对比
- mysql 日期和时间格式转换实现语句
- MySQL主从同步配置
- 淘宝内部分享:怎么跳出MySQL的10个大坑
- MySQL常用的命令大全
- MySQL+Altas 读写分离测试(Altas 不能用存储过程,Update和Delete必须要有参数)
- MySQL查询语句练习题,测试足够用了
- mysql导出数据和导入数据
- MySQL数据类型和常用字段属性总结
- 性能安全之新安装的MySQL必须调整的10项配置
- mysql导入与导出sql文件指令
- MySQL数据库学习
- MySQL忘记密码
- org.gjt.mm.mysql.Driver和com.mysql.jdbc.Driver有啥区别??
- mysql 判断 字段是否为空
- 如何利用一个数据库中间件扩展MySQL集群――kingshard使用指南
- windows无法启动MySQL服务 错误1067
- mysql数据库性能优化(包括SQL,表结构,索引,缓存)
- 如何搭建SSH+JPA+mysql项目