@[TOC]
1 事务隔离级别
read-uncommitted:脏读、不可重复度、幻读,均可出现。安全性低,性能高。read-committed(oracle默认):不可重复度、幻读。避免了脏读。repeatable-read(mysql默认):幻读。避免了脏读、不可重复度。serializable:避免了脏读、不可重复度、幻读。安全性高,性能低。2 脏读
开启两个窗口:- 查询事务默认的隔离级别
select @@transaction_isolation; - 设置隔离级别为
read-uncommittedset session transaction isolation level read uncommitted;
- 开启事务
start transaction;
- 脏读就是读到了其他事务,未提交的数据。
read-uncommitted。 - 查询数据的时候会有错误。
3 不可重复度
- 设置事务隔离级别为
read-committedset session transaction isolation level read committed;3.1 解决了脏读的问题。

3.2 有不可重复度的问题

4 幻读
- 设置隔离级别
set session transaction isolation level repeatable read;4.1 没有脏读和不可重复读的问题

4.2 有幻读的问题

5 serializable
设置事务隔离级别为serializable,脏读、不可重复读、幻读的问题都不存在,但是性能最低。
串行化:事务并发时,A事务提交后,B事务才能提交。set session transaction isolation level serializable;
- 开启事务