• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    MySQL 日志相关知识总结

    数据库中用于存储数据的文件称为data file,日志文件称为log file。此外,如果每次读写都是直接访问磁盘,性能很差,所以数据库是有缓存的,数据缓存是data buffer,日志缓存log buffer。

    sql执行顺序

    当我们执行一条更新语句时,比如 update table set c=c+1 where id = 2,执行顺序如下:

    补充:MySQL的基本存储结构是页(记录都存在页里边),所以MySQL是先把这条记录所在的页找到,然后把该页加载到内存中,再修改对应的记录。

    bin log

    是什么

    bin log称为归档日志、二进制日志,属于MySQL Server层面的,用于记录数据库表结构和表数据的变更,可以简单理解为存储每条变更的sql语句,比如insert、delete、update(当然,不仅是sql,还有事务id,执行时间等等)。

    什么时候产生

    事务提交的时候,一次性将事务中的sql语句按照一定格式记录到bin log

    有什么用

    主要有两个作用:主从复制和恢复数据

    什么时候落盘

    区分innodb_flush_log_at_trx_commit和sync_binlog

    ​ 二进制日志取决于sync_binlog参数

    文件记录模式

    bin log有三种文件记录模式,分别是row、statement、mixed

    优点:能够清楚记录每行数据修改细节,能够完全保证主从数据一致性
    缺点:批量操作时会产生大量的日志,比如alter table

    优点:日志数据量小,减少磁盘IO,提高存储和恢复速度
    缺点:在某些情况下会出现主从不一致,比如sql语句中包含**now()**等函数

    redo log

    是什么

    redo log称为重做日志,属于InnoDB存储引擎层的日志,记录物理页的修改信息,而不是某一行或几行修改成什么样

    什么时候产生

    事务开始,就会写入redo log。redo log写入到磁盘并不是随着事务提交才写入,而是在事务执行过程中,就已经写入到磁盘

    有什么用

    可用于恢复数据。redo log是在事务开始后就写入到磁盘,且是顺序IO,写入速度较快。如果服务器突然掉电,InnoDB引擎会使用redo log把数据库恢复到掉电前的时刻,保证数据的完整性

    什么时候落盘

    InnoDB先把日志写到缓冲区(log buffer),然后再把日志从log buffer刷到os buffer,最后调用文件系统的fsync函数将日志刷新到磁盘。重做日志写入时机由参数innodb_flush_log_at_trx_commit决定

    一般取值为2,因为即使MySQL宕机,数据也没有丢失。只有整个服务器挂了,才损失1秒的数据

    bin log VS redo log

    看了以上的介绍,感觉bin log和redo log很像,都是记录数据变更,可用于恢复。其实,它们还是有明显区别的。

    如果整个数据库被删除,可以通过redo log恢复吗?

    不行!因为redo log侧重点是保存某次事务的数据变更,当内存中的数据刷到磁盘后,redo log的数据其实已经没有参考价值。此外,redo log会覆盖历史数据,也不可能通过它来恢复所有数据。

    undo log

    详细分析MySQL事务日志

    是什么

    undo log称为回滚日志,属于InnoDB存储引擎层,是逻辑日志,记录每行数据。当我们变更数据时,就会产生undo log,可以认为insert一条数据,undo log会记录一条对应的delete日志,反之亦然。

    什么时候产生

    在事务开始前,将当前版本生成undo log

    有什么用

    主要作用:提供回滚和多版本并发控制(MVCC)

    以上就是MySQL 日志相关知识总结的详细内容,更多关于MySQL 日志的资料请关注脚本之家其它相关文章!

    您可能感兴趣的文章:
    • MySQL 一则慢日志监控误报的问题分析与解决
    • MySQL慢查询日志的作用和开启
    • MySQL 慢查询日志的开启与配置
    • 详解监听MySQL的binlog日志工具分析:Canal
    • 详解MySQL 重做日志(redo log)与回滚日志(undo logo)
    • MySQL Aborted connection告警日志的分析
    • 详解 Mysql 事务和Mysql 日志
    • 关于Anemometer图形化显示MySQL慢日志的工具搭建及使用的详细介绍
    • MySQL5.7慢查询日志时间与系统时间差8小时原因详解
    • mysql将bin-log日志文件转为sql文件的方法
    上一篇:Mysql桌面工具之SQLyog资源及激活使用方法告别黑白命令行
    下一篇:如何区分MySQL的innodb_flush_log_at_trx_commit和sync_binlog
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    MySQL 日志相关知识总结 MySQL,日志,相关,知识,总结,