数据库事务的四种隔离级别
数据库事务的隔离级别有4个,由低到高依次为:
Read uncommitted
|
未授权读取
读未提交
|
读可允许其他 两个事务不能同时进行写操作 |
事务B读取事务A未提交的数据
|
避免更新丢失
会出现脏读
|
Read committed
|
授权读取
读提交
|
读可允许其他
未提交的事务禁止其他事务访问进行
|
事务A读取数据
事务B更改数据
事务A读取B更改后的数据,前后结果不一致
|
避免脏读
会出现不可重复读(重复读取结果不同)
|
Repeatable read
|
可重复读取
|
读不允许写事务进行
写禁止其他事务进行
|
事务A读取R1和修改R2
事务B则不能修改R1和读取R2,B不会影响A
如果A包含一个统计某个范围内记录的操作,而B恰好在范围内插入一条记录,造成A幻读
|
可重复读取 会出现幻读 |
Serializable
|
序列化
|
事务只能一个接着一个执行,不能并发执行
|
最高的事务隔离级别,性能很低,一般很少用
|
避免脏读,避免不可重复读,避免幻读
|