File tree 1 file changed +8
-8
lines changed
1 file changed +8
-8
lines changed Original file line number Diff line number Diff line change 74
74
75
75
- ### 事务机制
76
76
77
- ** 关系性数据库需要遵循ACID规则,具体内容如下:**
77
+ ** 关系性数据库需要遵循ACID规则,具体内容如下:**
78
78
79
79
![ 事务的特性] ( https://user-gold-cdn.xitu.io/2018/5/20/1637b08b98619455?w=312&h=305&f=png&s=22430 )
80
80
81
- 1 . ** 原子性:** 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用;
82
- 2 . ** 一致性:** 执行事务前后,数据保持一致;
83
- 3 . ** 隔离性:** 并发访问数据库时,一个用户的事物不被其他事物所干扰,各并发事务之间数据库是独立的;
84
- 4 . ** 持久性:** 一个事务被提交之后。它对数据库中数据的改变是持久的,即使数据库发生故障也不应该对其有任何影响 。
85
-
81
+ 1 . ** 原子性:** 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用;
82
+ 2 . ** 一致性:** 执行事务前后,数据保持一致;
83
+ 3 . ** 隔离性:** 并发访问数据库时,一个用户的事物不被其他事物所干扰,各并发事务之间数据库是独立的;
84
+ 4 . ** 持久性:** 一个事务被提交之后。它对数据库中数据的改变是持久的,即使数据库 发生故障也不应该对其有任何影响 。
85
+
86
86
** 为了达到上述事务特性,数据库定义了几种不同的事务隔离级别:**
87
87
88
88
- ** READ_UNCOMMITTED(未授权读取):** 最低的隔离级别,允许读取尚未提交的数据变更,** 可能会导致脏读、幻读或不可重复读**
89
89
- ** READ_COMMITTED(授权读取):** 允许读取并发事务已经提交的数据,** 可以阻止脏读,但是幻读或不可重复读仍有可能发生**
90
90
- ** REPEATABLE_READ(可重复读):** 对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改,** 可以阻止脏读和不可重复读,但幻读仍有可能发生。**
91
91
- ** SERIALIZABLE(串行):** 最高的隔离级别,完全服从ACID的隔离级别。所有的事务依次逐个执行,这样事务之间就完全不可能产生干扰,也就是说,** 该级别可以防止脏读、不可重复读以及幻读** 。但是这将严重影响程序的性能。通常情况下也不会用到该级别。
92
92
93
- 这里需要注意的是:** Mysql 默认采用的 REPEATABLE_READ隔离级别 Oracle 默认采用的 READ_COMMITTED隔离级别.**
93
+ 这里需要注意的是:** Mysql 默认采用的 REPEATABLE_READ隔离级别 Oracle 默认采用的 READ_COMMITTED隔离级别.**
94
94
95
- 事务隔离机制的实现基于锁机制和并发调度。其中并发调度使用的是MVVC(多版本并发控制),通过保存修改的旧版本信息来支持并发一致性读和回滚等特性。
95
+ 事务隔离机制的实现基于锁机制和并发调度。其中并发调度使用的是MVVC(多版本并发控制),通过保存修改的旧版本信息来支持并发一致性读和回滚等特性。
96
96
97
97
详细内容可以参考: [ 可能是最漂亮的Spring事务管理详解] ( https://blog.csdn.net/qq_34337272/article/details/80394121 )
You can’t perform that action at this time.
0 commit comments