事务的四大特性
事务的四大特性分别是:原子性,一致性,隔离性,持久性
一、 原子性(Atomicity)
原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚。也就是说,有任何一个操作失
败,则其他操作也不会提交。
二、一致性(Consistency)
一致性是指数据库在事务操作前和事务处理后,其中的数据必须都满足业务规则约束。一般指总和前后一致。
如转账操作时,用户甲与乙的账户共有10000元,不论甲乙之间如何进行转账操作,最后甲乙的总金额还应该是10000。这就是事务的一致性。
三、隔离性(Isolation)
隔离性是数据库允许多个并发事务同时对齐数据进行读写和修改的能力,防止多事务执行导致数据
的不一致。
有两个用户操作同一张表,也就是两个事务操作同一张表。此时一定会有事务先后顺序,当一
个事务操作结束后,另一个事务才会开始操作。这就是事务的隔离性。
四、持久性(Durability)
持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库
系统遇到故障的情况下也不会丢失提交事务的操作。 提交之后数据存放在磁盘中,是永久性的。
脏读,幻读,不可重复读,丢失修改
脏读:事务A查询数据后进行了一次修改且未提交,而事务B这个时候去查询,然后使用了这个数据,因为这个数据还没有被事务A 提交到数据库中,所以事务B的得到数据就是脏数据,对脏数据进行操作可能是不正确的。
不可重复读: 事务A访问了两次数据,但是这访问第二次之间事务B进行一次并进行了修改,导致事务A访问第二次的时候得到的数据与第一次不同,导致一个事务访问两次数据得到的数据不相同。因此叫做不可重复读。
幻读: 与不可重复读都点相似,只是这次是事务B在事务A访问第二次的之前做了一个新增,导致事务A第二次读取的时候发现了多的记录,这就是幻读。
丢失修改:事务A访问该数据,事务B也访问该数据,事务A修改了该数据,事务B也修改了该数据,这样导致事务A的修改被丢失,因此称为丢失修改;
不可重复度和幻读区别:
- 不可重复读主要是修改操作,幻读的主要在于新增或者删除。
- 幻读主要在于数据的条数变了,而不可重复读主要在于数据内容变了。