事务的 ACID

事务 ACID 原则是指事务的四大特征:原子性、一致性、独立性、持久性

Atomic 原子性

事务中的所有操作,要么全部完成,要么全都没完成,不允许存在一部分操作完成而另一部分未完成时事务就结束的情况。

Consistent 一致性

事务结束时系统的状态是一致的,举个例子,一个数据库中保存的资金金额为1个亿,不管多少事务在执行,这些事务结束后,数据库中的资金金额依旧为1个亿,而不会突变为2个亿。

Isolated 隔离性

各个事务之间相互独立存在,一个事务不知道另一个事务的中间状态。

Durable 持久性

事务结束后,系统数据都被固化下来,哪怕系统崩溃,也能通过日志或其他手段恢复数据,重现事务结束时的状态。

实现 ACID 可不容易,现在的数据库一般都用日志方式来做到 ACID,在做任何改变之前都必须先保证日志已经被记录下来,但写日志记录耗时很大,代价较大。
REDO,重做:是指操作已经写入到日志,但实际上在改数据库时机器崩溃,部分数据还没改完,这时需要根据日志的内容,重新改数据库。
UNDO,撤销:在提交事务前,部分操作已经在执行,但最终事务没被提交,所以需要根据日志将那些更改给撤销。