原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability),这些特性通常简称为ACID。
●原子性:事务是一个完整的操作,事务的各步操作(各元素)是不可分的最小操作单位,要么都执行,要么都不执行要么全部完成,要么全部不完成
●一致性:当事务完成时,数据必须处于一致状态。
●隔离性:对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,他不应以任何方式依赖于或影响其他事务。,可设置隔离级别
● 持久性:事务的持久性指不管系统是否发生了故障,事务处理的结果都是永久的。
事务四特性简述:
原子性
|
是不可分割的最小操作单位,要么同时成功,要么同时失败。
|
持久性
|
当事务提交或回滚后,数据库会持久化的保存数据。
|
隔离性
|
多个事务之间。相互独立。
|
一致性
|
事务操作前后,数据总量不变
|
隔离级别
事务隔离级别
|
会出现问题
|
读未提交(Read Uncommitted)
|
脏读、幻读、不可重复读
|
读已提交(Read Committed)
|
幻读、不可重复读
|
可重复读(Repeatable Read)
|
不可重复读
|
串行化(Serializable)
|
不会产生任何问题、但是效率极低,会锁表
|
并发情况下事务引发的问题
—般情况下,多个单元操作并发执行,会出现这么几个问题
- 不可重复读的重点是修改: 同样的条件, 你读取过的数据, 再次读取出来发现值不一样了
- 幻读的重点在于新增或者删除 (数据条数变化)。同样的条件, 第1次和第2次读出来的记录数不一样
- 脏读发生在一个事务A读取了被另一个事务B修改,但是还未提交的数据。假如B回退,则事务A读取的是无效的数据。这跟不可重复读类似,但是第二个事务不需要执行提交。
简述:
- 脏读︰A事务还未提交,B事务就读到了A事务的结果。(破坏了隔离性〕
- 不可重复读∶A事务在本次事务中,对自己未操作过的数据,进行了多次读取,结果出现了不一致或记录不存在的情况。(破坏了一致性,update和delete )
- 幻读:A事务在本次事务中,对自己未操作过的数据,进行了多次读取,第一次遗取时,记录不存在,第二次读取时,记录出现了。〔破坏了一致性,insert )
事务本身其实并不包含这四个特性,我们需要通过某些手段,尽可能的让这个执行单元满足这四个特性。那么我们就可以称他为事务
* 注意:隔离级别从小到大安全性越来越高,但是效率越来越低
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。