文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

MySQL 日志相关知识总结

2022-05-21 09:51

关注

数据库中用于存储数据的文件称为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 日志的资料请关注自学编程网其它相关文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯