事务的四个特性,简称为ACID,这是这四个特性的英文头个字母。
一:原子性(Atomic)
所谓原子性就是指的事务的不可分割性,原子是最小的单位,所以理解事务的原子性就是理解事务无法进行分割,事务里的数据库操作要么全部成功,要么全部失败,不可能出现一部分成功,一部分失败的情况,这就是原子性。
二:一致性(Consistent)
事务操作会确保数据库状态保持一致性,事务提交前和提交后数据库状态会发生改变,但会保持一致性,例如购买商品,一旦完成一笔交易的事务,数据库里的商品数必然减1,同时商店收益必然增加,这就是保持了数据库状态的一致性。
三:隔离性(Isolated)
隔离性指的是事务间是相互独立的,不会互相影响,例如点餐过程为一个事务,从电话订购到做出饭菜送餐完成结算完成所有这些操作为一个事务,不同的人进行点餐操作都是相互独立的,并不会互相影响,这就是事务的隔离性,如果一个事务影响了其他的事务,其他的事务将会进行回滚,就如上面的点餐例子,如果饭菜已经卖完,最后点餐的事务将会影响后面的事务,因为没有餐可点了,那么后面的事务将会回滚。
四:持久性(durable)
事务提交的结果或者效果在出现各种故障(例如断网、服务器出问题之类的)的情况依旧能够保存下来,这就是事务的持久性。
事务应该具有4个属性:原子性、一致性、隔离性、持续性。这四个属性通常称为ACID特性。
原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。
一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
持久性(durability)。持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。