通用查询日志(general query log)用来记录用户的所有操作,包括启动和关闭MySQL服务、所有用户的连接开始时间和截止时间、发送给MySQL数据库服务器的所有SQL指令等。当我们的数据发生异常时,查看通用查询日志,还原操作时的具体场景,准确定位问题。
Redo log是事务持久性的保证,Undo log是事务原子性的保证。在事务中更新数据的前置操作其实就是要写入Undo log。作用一:回滚数据 用户对undo日志可能有误解:undo用于将数据库物理地恢复到执行语句或事务之前的样子。但事实并非如此。undo是逻辑日志,因此只是将数据库逻辑地恢复到原来的样子。所有修改都被逻辑地取消了,但是数据结构和页本身在回滚之后可能大不相同。作用二:MVCC(多版本并发控制)undo的另一个作用是MVCC,即在InnoDB存储引擎中MVCC的实现是通过undo来完成。当用户读取一行记录时,若该记录已经被其他事务占用,当前事务可以通过undo读取之前的行版本信息,以此实现非锁定读取。
redo 日志降低了刷盘的频率,并且redo日志占用的空间非常小。(redo日志主要存储表空间ID、页号、偏移量以及需要更新的值,所需存储的空间很小,刷盘快)。Redo Log 可以简单的非为两部分组成:重做日志的缓存(redo log buffer),保存在内存中,容易丢失。重做日志文件(rodo log file),保存在硬盘中,保证持久性。Redo Log写入并不是直接写入磁盘的,Innodb引擎会在写Redo Log的时候先写redo log buffer,之后再以一定的频率刷入到真正的redo log file中。这里的一定的频率就是所谓的刷盘策略。
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号