事务是一种操作集合,在计算机属于中是指访问并可能更新数据库各种数据项的一个程序执行单元。通常指数据库事务。
举例说明通过数据库事务保证数据的完整性和准确性。熟悉关系型数据库事务的都知道从帐号A到帐号B需要6个操作:
1、从A账号中把余额读出来(500)。
2、对A账号做减法操作(500-100)。
3、把结果写回A账号中(400)。
4、从B账号中把余额读出来(500)。
5、对B账号做加法操作(500+100)。
6、把结果写回B账号中(600)。
原子性:保证所有过程要么都执行,要么都不执行。一旦执行中出现问题,必须回滚到起始状态。
一致性:在转账之前,A和B的账户中共有500+500=1000元钱。在转账之后,A和B的账户中共有400+600=1000元。也就是说,数据的状态在执行该事务操作之后从一个状态改变到了另外一个状态。同时一致性还能保证账户余额不会变成负数等。
隔离性:并发访问数据库不同事务间不受影响。
持久性:一旦转账成功(事务提交commit),两个账户钱发生改变(会把数据写入数据库作持久化保存)
事物的原子性和一致性缺一不可!