MySQL中 redo log 的两阶段提交
warning:
这篇文章距离上次修改已过197天,其中的内容可能已经有所变动。
在MySQL中,redo log的两阶段提交是指InnoDB存储引擎用于保证事务ACID属性中的D(持久性)的一种机制。两阶段提交分为prepare和commit两个阶段。
以下是一个简化的示例,描述了两阶段提交的过程:
-- 假设有一个事务,需要更新两行数据
-- 第一阶段:prepare
UPDATE my_table SET my_column = 'new value' WHERE my_key = 1; -- 记录redo log
UPDATE my_table SET my_column = 'new value' WHERE my_key = 2; -- 记录redo log
-- 第二阶段:commit
COMMIT; -- 写入binlog并清除redo log
在这个过程中,如果在commit阶段之前服务器崩溃了,那么在重启后,MySQL可以通过redo log来恢复这个事务的状态,并重新执行commit操作,从而确保事务的持久性。
注意,这个过程是MySQL内部的,对用户透明,用户只需要知道执行标准的事务操作即可。
评论已关闭