多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
### 事务四大特性 #### 1、原子性(Atomicity) 事务被视为不可分割的最小单元,事务的所有操作要么全部提交成功,要么全部失败回滚。 #### 2、一致性(Consistency) 数据库在事务执行前后都保持一致性状态。在一致性状态下,所有事务对一个数据的读取结果都是相同的。 #### 3、隔离性(Isolation) 一个事务所做的修改在最终提交以前,对其它事务是不可见的。。 #### 4、持久性(Durability) 一旦事务提交,则其所做的修改将会永远保存到数据库中。即使系统发生崩溃,事务执行的结果也不能丢失。可以通过数据库备份和恢复来保证持久性。 <br> ## 并发下产生的问题: 在并发环境下, 事务的隔离性很难保证, 因此会出现一些并发一致性问题. 1. 脏读 T1修改了一个数据, T2随后读取了这个数据, 如果T1撤销了这次修改, 那么T2读取的数据是脏数据. 因为T1的修改并没有commit到数据库, 但是这个事务对别的事务可见. 2. 不可重复读 T1中多次读取一个数据过程中, 由于T2对数据进行了修改, 并提交了事务, 因此T1前后读的到的相同数据的值不相同. 3. 幻读 T1读取了某个范围的数据, T2在这个范围插入了新的数据, T1再次读的时候, 发现在这个范围中还有没有读取的数据, 像是幻觉. <br> ## 隔离级别 1. 未提交读 事务中的修改, 即使没有提交, 对其他事务也可见. 2. 提交读 一个事务只能读取已经提交的事务所做的修改. 也就是说, 一个事务在提交前, 对其他事务是不可见的. 3. 可重复读 保证在同一个事务中多次读取同个数据的结果是一样的. 4. 可串行化 强制事务串行化执行. | 隔离级别 | 脏读 | 不可重复读 | 幻影读 | | --- | --- | --- | --- | | 未提交读 | YES | YES | YES | | 提交读 | NO | YES | YES | | 可重复读 | NO | NO | YES | | 可串行化 | NO | NO |NO|