•
对于同时运行的多个事务
,
当这些事务访问数据库中相同的数据时
,
如果没有采取必要的隔离机制
,
就会导致各种并发问题
:
–
脏读
:
对于两个事物
T1, T2, T1
读取了已经被
T2
更新但还
没有被提交
的字段
之后
,
若
T2
回滚
, T1
读取的内容就是临时且无效的
.
–
不可重复读
:
对于两个事物
T1, T2, T1
读取了一个字段
,
然后
T2
更新
了该字段
.
之后
, T1
再次读取同一个字段
,
值就不同了
.
–
幻读:
对于两个事物
T1, T2, T1
从一个表中读取了一个字段
,
然后
T2
在该表中
插入
了一些新的行
.
之后
,
如果
T1
再次读取同一个表
,
就会多出几行。
•
数据库事务的隔离性
:
数据库系统必须具有隔离并发运行各个事务的能力
,
使它们不会相互影响
,
避免各种并发问题
.
•
一个事务与其他事务隔离的程度称为隔离级别
.
数据库规定了多种事务隔离级别
,
不同隔离级别对应不同的干扰程度
,
隔离级别越高
,
数据一致性就越好
,
但并发性越弱
•
数据库提供的
4
种事务隔离级别
:
•
Oracle
支持的
2
种事务隔离级别:
READ COMMITED
, SERIALIZABLE. Oracle
默认的事务隔离级别为
: READ COMMITED
•
Mysql
支持
4
中事务隔离级别
.
Mysql
默认的事务隔离级别为
: REPEATABLE READ