zoukankan      html  css  js  c++  java
  • Mysql 重做日志

    Mysql默认情况下会有两个文件:ib_logfile0ib_logfile1,这两个文件就是重做日志文件,或者事务日志。

    重做日志的目的:万一实例或者介质失败,重做日志文件就能派上用场。

    每个InnoDB存储引擎至少有一个重做日志文件组,每个文件组下至少有2个重做日志文件,如默认的ib_logfile0ib_logfile1InnoDB存储引擎先写重做日志文件1,当达到文件的最后时,会切换至重做日志文件2,当重做日志文件2也被写满时,会再被切换到重做日志文件1中。

    影响重做日志的参数:

    Innodb_log_file_sizeinnodb_log_files_in_groupinnodb_log_group_home_dir影响着重做日志文件的属性。

     

    重做日志与二进制日志的区别:

    1)二进制日志会记录所有与mysql有关的日志记录,包括InnoDB等其他存储引擎的日志,而InnoDB存储引擎的重做日志只记录有关其本身的事务日志

    2)记录的内容不容,不管你将二进制日志文件记录的格式设为哪一种,其记录的都是关于一个事务的具体操作内容,InnoDB存储引擎的重做日志文件记录的关于每个页的更改的物理情况;

    3)写入的时间也不同,二进制日志文件是在事务提交前进行记录的,而在事务进行的过程中,不断有重做日志条目被写入重做日志文件中。

    从日志缓冲写入磁盘上的重做日志文件的条件:

    在主线程中每秒会将重做日志缓冲写入磁盘的重做日志文件中,不论事务是否提交。另一个触发这个过程是由参数innodb_flush_log_at_trx_commit控制,表示在提交时,处理重做日志的方式。

    参数innodb_flush_log_at_trx_commit可设的值有012,0代表当提交事务时,并不将事务的重做日志写入磁盘上的日志文件,而是等待主线程每秒的刷新,而12不同的地方在于:1是在commit时将重做日志缓冲同步写到磁盘;2是重做日志异步写到磁盘,即不能完全保证commit时肯定会写入重做日志文件,只是有这个动作

     值得注意的一点:因为重做日志有个capacity变量,该值代表了最后的检查点不能超过这个阀值。

  • 相关阅读:
    电子设计基础——有效值检波技术
    电子设计基础——电源的各项指标及测量方法
    电子设计基础——电源的各项指标及测量方法
    计算机网络——IP地址与MAC地址
    计算机网络——IP地址与MAC地址
    LDC1000学习资料
    移动端制作公共样式reset
    单行、多行溢出省略
    垂直居中常用布局
    移动端rem布局必要的meta和script
  • 原文地址:https://www.cnblogs.com/benshan/p/2862357.html
Copyright © 2011-2022 走看看