Skip to content

Latest commit

 

History

History
9 lines (6 loc) · 840 Bytes

File metadata and controls

9 lines (6 loc) · 840 Bytes

数据库如何保证原子性?

主要是利用 Innodb 的undo logundo log名为回滚日志,是实现原子性的关键,当事务回滚时能够撤销所有已经成功执行的 SQL语句,他需要记录你要回滚的相应日志信息。 例如

  • 当你delete一条数据的时候,就需要记录这条数据的信息,回滚的时候,insert这条旧数据
  • 当你update一条数据的时候,就需要记录之前的旧值,回滚的时候,根据旧值执行update操作
  • 当年insert一条数据的时候,就需要这条记录的主键,回滚的时候,根据主键执行delete操作

undo log记录了这些回滚需要的信息,当事务执行失败或调用了rollback,导致事务需要回滚,便可以利用undo log中的信息将数据回滚到修改之前的样子。