番禺建设工程交易中心网站免费网站制作多少钱
web/
2025/9/29 1:41:50/
文章来源:
番禺建设工程交易中心网站,免费网站制作多少钱,制作网页需要多少钱,优秀的设计网站目录 1 redo log#xff08;重做日志#xff09;2 undo log#xff08;回滚日志#xff09;3 Binlog#xff08;二进制日志#xff09;4 两阶段提交4.1 执行过程4.2 系统崩溃后重启如何刷新数据4.3 redo log 和 bin log区别 MySQL是一个关系型数据库管理系统#xff0c;… 目录 1 redo log重做日志2 undo log回滚日志3 Binlog二进制日志4 两阶段提交4.1 执行过程4.2 系统崩溃后重启如何刷新数据4.3 redo log 和 bin log区别 MySQL是一个关系型数据库管理系统它使用SQLStructured Query Language作为主要的数据操作语言。在MySQL中特别是在InnoDB存储引擎中数据修改过程涉及到两种重要的日志redo log重做日志和undo log回滚日志。
1 redo log重做日志
Redo log用于保证事务的持久性。当你修改数据时这些修改首先会被写入到redo log中并且几乎是同时写入到内存中的数据页。如果数据库系统发生崩溃那些还没有被持久化到磁盘上的内存页修改可以通过重播redo log来恢复。Redo log采用的是循环写入的方式它分为两个部分一部分在内存中称为log buffer另一部分在磁盘上。
修改数据的步骤通常包括
将修改操作写入到redo log buffer。修改内存中的数据页。在适当的时候将redo log buffer中的内容刷新flush到磁盘上。
2 undo log回滚日志
Undo log用于多个目的包括回滚事务中未提交的操作以及提供MVCC多版本并发控制时所需的旧版本数据。当对数据进行修改时会在undo log中记录一个逆向操作。如果一个事务需要回滚或者其他事务需要看到修改前的数据undo log将被用来恢复或者提供数据的旧版本。
修改数据时undo log的流程通常如下
记录数据修改前的状态到undo log。执行数据修改。如果事务提交则最终会清除掉相应的undo log记录。如果发生回滚则使用undo log来撤销已经执行的修改。
3 Binlog二进制日志
Binlog是MySQL中的二进制日志用于记录数据库的逻辑改变如对数据库中的数据进行了怎样的操作增删改。通过Binlog可以对数据库进行基于时间点的恢复、数据复制和主从同步。Binlog的存在为数据备份、恢复和同步提供了强大的支持。
4 两阶段提交
两阶段提交发生在redo log和bin log日志写入阶段把日志写入和日志提交分为两个阶段prepare准备、commit提交
4.1 执行过程
当执行一条update语句的时候首先会记录到buffer pool里面然后对应在undo log中更新历史数据在redo log中更新修改数据并修改状态为prepare。当事务commit的时候会向bin log里面写入修改逻辑同时修改undo log状态为commit。
之后修改过后的数据是异步写入磁盘的。
4.2 系统崩溃后重启如何刷新数据
当写入undo log之前崩溃这时undo log和bin log中都没有数据此时满足数据一致性不需要进行操作。当在写入bin log之前崩溃此时根据undo log中的事务id去bin log中查找是没有数据的因此会回滚。当在写入bin log之后崩溃无论undo log有没有修改为commit状态都会把数据更新到磁盘。
4.3 redo log 和 bin log区别
redo log是innodb存储引擎独有的binlog是不区分存储引擎记录内容不同, redo log是物理日志,记录事务具体操作的内容; bin log是逻辑日志,记录事务操作过程写入时间不同先写入redo log,再写入binlogredo log是循环使用文件bin log每次新增一个文件
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/83631.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!