湖北省建设厅质监站网站,遂宁商城网站建设,城乡住房建设厅网站首页,长春信息网招聘MySQL之三大日志#xff08;更新中#xff09;
MySQL日志记录着数据库运行过程中的各种信息#xff0c;包括#xff1a;错误日志、普通查询日志、慢查询日志、二进制日志、中继日志、事务日志等。
综合上一篇《MySQL之幻读问题》涉及到事务#xff0c;本文主…MySQL之三大日志更新中
MySQL日志记录着数据库运行过程中的各种信息包括错误日志、普通查询日志、慢查询日志、二进制日志、中继日志、事务日志等。
综合上一篇《MySQL之幻读问题》涉及到事务本文主要讲下事务日志和二进制日志。事务日志中的重做日志和回滚日志与事务操作息息相关二进制日志也与事务操作有一定关系这三种日志对理解MySQL事务操作有着重要意义。
事务日志 事务日志包括重做日志(redo log)和回滚日志(undo log) 事务四大特性ACID其中的D就是持久性。指的是只要事务提交成功对数据库的修改就是永久性的无法恢复到原来的状态。
那MySQL是如何保证持久性的最简单的做法就是在每次事务提交的时候将该事务涉及修改的数据刷入磁盘中。
但这么做会有性能问题。
InnoDB是以页为单位与磁盘进行交互而一个事务可能只修改了一个数据页中的几个字节这时要是将完整的数据页刷入到磁盘中实属浪费资源一个事务可能涉及修改多个数据页并且这些数据页在物理上并不连续使用随机IO写入性能太差
因此MySQL设计了redo log就是只记录事务对数据页做了哪些修改。日志文件更小并且是顺序IO。
重做日志(redo log)
redo log包括两部分内存中的日志缓冲(redo log buffer)、磁盘上的日志文件(redo log file)。 MySQL每执行一条DML语句先将记录写入缓冲后续在一次性将多个操作记录写入到日志文件。这种先写日志再写磁盘就是MySQL里经常用的WALWrite-Ahead Logging预写日志。
MySQL配置redo log buffer写入redo log file
参数值作用0延迟写入1实时写入实时刷入2实时写入延迟刷入
…未完待续
我是六涛sheliutao文章编写总结不易转载注明出处喜欢本篇文章的小伙伴欢迎点赞、关注有问题可以评论区留言或者私信我相互交流