外观
外观
345字约1分钟
2025-03-05
MYSQL 主要有以下三种类型的日志:
bin log:是 MYSQL 的二进制日志文件,主要用来记录对 MYSQL 服务器上所有操作(DDL、 DML),主要在事务提交后生成、可以用来恢复数据库数据;
redo log :记录对数据库页的所做的修改,在实例崩溃重启时,可以通过 redo log 恢复未完成的事务,确保事务的一致性,另外当一个事务提交时,会将该事务的日志写入 redo log 并刷新到磁盘里,确保事务的持久性;
undo log:当事务执行失败或被显示回滚时,undo log 可以撤销已经做出的更改,使数据库回到事务执行前的状态,确保事务的原子性。
MYSQL 主要是通过 锁、redo log、undo log、MVCC 来实现事务的:
MYSQL 利用的锁(行锁、间隙锁等等)机制,实现数据并发修改的控制,符合事务的隔离性;
MVCC(多版本并发控制),满足了非锁定读的需求,提高了并发度,实现了读已提交和可重复读两种隔离级别,实现了事务的隔离性
redo log 和 undo log 的作用可参考上述的介绍。