Ø 事物的特性:
○ 原子性:
§ 强调事物的不可分割
○ 一致性:
§ 强调的是事物的执行的前后,数据的完整性要保持一致
○ 隔离性:
§ 一个事物的执行不应该受到其他事物的干扰
○ 持久性:
§ 事物一旦结束(,提交/回滚),数据就持久的保存到了数据库
Ø 如果不考虑事物的隔离性,引发一些安全性问题
○ 一类是读问题:
§ 脏读:
□ 一个事物读到另一个事物还没有提交的数据.
§ 不可重复读:
□ 一个事物读到另一个事物已经提交的update的数据,导致在当前事物中多次查询结果不一致
§ 虚读/幻读:
□ 一个事物读到另一个事物已经提交的insert的数据,导致在当前事物中多次查询结果不一致
○ 一类是写问题:
§ 引发两类丢失更新:
Ø 解决引发的读问题:
○ 设置事物的隔离级别:
§ Read uncommited :未提交读藏独,不可重复读,虚读都可以能发生
§ Read committed :已提交读,避免脏读,但是不可重复读,虚读都可能发生
§ Repeatable read :可重复读,避免脏读,不可重复读,但是虚读有可能发生
§ Serializable :串行化的,避免脏读,不可重复读,虚读的发生
○ MYSQL隔离级别:repeatable read ///Oracle 隔离级别:read committed
|
|