事务有四大特性,分别是原子性(Atomicity),一致性(Consistency),隔离性(Isolation),持久性(Durability)
- .原子性:不可再分割,要么全部成功,要么全部失败,举个例子,人要活着,必须得呼吸,吃饭,喝水(假设这些是必备,缺一就活不了),如果一个人这三个只要有一个不满足,那么就活不成,要么死,要么生,这就是原子性。
- 一致性:保持事务的完整性,举个例子,我帮你支付100买东西,理应,你得还我100吧,不可能还少还多,谁都不乐意,这就是一致性。
- 隔离性:当多个用户访问同一个数据库时,每个事务互不干扰
- 持久性:使数据在数据库中永久保存
区别原子性和一致性: 原子性不能百分百的保证一致性,如下面例子
举例:事务1需要将100元转入帐号A:先读取帐号A的值,然后在这个值上加上100。但是,在这两个操作之间,另一个事务2修改了帐号A的值,为它增加了100元。那么最后的结果应该是A增加了200元。但事实上,事务1最终完成后,帐号A只增加了100元,因为事务2的修改结果被事务1覆盖掉了。
三种隔离级别
脏读: 读取了未提交的事务。
不可重复读: 是指在一个事务内,多次读同一数据。在这个事务还没有提交前,另一个事务也读取这个事务,导致前一个事务读取两次值不一样。
幻读: 两个事务读取同一张表A事务修改数据,但是数据却不是和自己修改的一致,原因是B事务也对这张标做了修改