主要是利用 Innodb 的undo log。 undo log名为回滚日志,是实现原子性的关键,当事务回滚时能够撤销 所有已经成功执行的 SQL语句,他需要记录你要回滚的相应日志信息。 例如
当你delete一条数据的时候,就需要记录这条数据的信息,回滚的时候,insert这条旧数据
当你update一条数据的时候,就需要记录之前的旧值,回滚的时候,根据旧值执行update操作
当年insert一条数据的时候,就需要这条记录的主键,回滚的时候,根据主键执行delete操作
undo log记录了这些回滚需要的信息,当事务执行失败或调用了rollback,导致事务需要回滚,便可以利 用undo log中的信息将数据回滚到修改之前的样子。