ACID是靠什么保证的?

原子性(Atomicity)

原子性由undolog日志来保证,它记录了需要回滚的日志信息,事务回滚时撤销已经执行成功的SQL

一致性(Consistency)

事务的一致性指的是在一个事务在执行之前和执行之后数据库都必须处于一致性状态。

一致性是ACID的目的,也就是说,只需要保证原子性,隔离性,持久性,也就自然保证了数据的一致性。

程序代码要保证业务上的一致性。

隔离性(Isolation)

隔离性由MVCC保证

隔离性是当多个用户同时访问数据时,且操作相同的数据时,需要保证事务之间彼此不被打扰,多个并发事务之间要相互隔离。

持久性(Durability)

持久性由redolog来保证,mysql修改数据时会在redolog中记录一份日志数据,就算数据没有保存成功,只要日志保存成功了,数据仍然不会丢失

事务的持久性指的是只要事务成功结束,它对数据库所做的更新就必须永久保存下来,即使发生系统崩溃,重新启动数据库系统后,数据库还能恢复到事务成功结束时的状态。

持久性意味着事务操作最终要持久化到数据库中,持久性是由 内存+redo log来保证的,MySQL的InnoDB在修改数据的时候,同时在内存和redo log记录这次操作,宕机的时候可以从redo log中恢复数据。

最后修改:2023 年 01 月 31 日
如果觉得我的文章对你有用,请随意赞赏