赞
踩
MySQL是一个关系型数据库管理系统,它使用SQL(Structured Query Language)作为主要的数据操作语言。在MySQL中,特别是在InnoDB存储引擎中,数据修改过程涉及到两种重要的日志:redo log(重做日志)和undo log(回滚日志)。
Redo log用于保证事务的持久性。当你修改数据时,这些修改首先会被写入到redo log中,并且几乎是同时写入到内存中的数据页。如果数据库系统发生崩溃,那些还没有被持久化到磁盘上的内存页修改可以通过重播redo log来恢复。Redo log采用的是循环写入的方式,它分为两个部分:一部分在内存中,称为log buffer,另一部分在磁盘上。
修改数据的步骤通常包括:
Undo log用于多个目的,包括回滚事务中未提交的操作,以及提供MVCC(多版本并发控制)时所需的旧版本数据。当对数据进行修改时,会在undo log中记录一个逆向操作。如果一个事务需要回滚,或者其他事务需要看到修改前的数据,undo log将被用来恢复或者提供数据的旧版本。
修改数据时,undo log的流程通常如下:
Binlog是MySQL中的二进制日志,用于记录数据库的逻辑改变,如对数据库中的数据进行了怎样的操作(增删改)。通过Binlog,可以对数据库进行基于时间点的恢复、数据复制和主从同步。Binlog的存在为数据备份、恢复和同步提供了强大的支持。
两阶段提交发生在redo log和bin log日志写入阶段,把日志写入和日志提交分为两个阶段(prepare准备、commit提交)
之后修改过后的数据是异步写入磁盘的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。