脏读(未提交读): 正在执行的事务 读取到其他事物未提交的数据
A事务 | B事务 |
---|---|
开始事务 | 开始事务 |
查询小明年龄 是30岁 | |
查询用户列表 共100条数据 | |
查询用户列表 共100条数据 | |
修改小明的年龄为20岁 | |
添加50个用户 | |
查询小明的年龄 此时变成了20 | |
查询用户列表 共150条数据 | |
提交事务 | 提交事务 |
提交读:正在执行的事务 读取到其他事务已提交的数据 读取到其他事务已提交的修改 造成了不可重读, 读取到其他事务的插入 造成了幻读
A事务 | B事务 |
---|---|
开始事务 | 开始事务 |
查询小明年龄 是30岁 | |
查询用户列表 共100条数据 | |
查询用户列表 共100条数据 | |
修改小明的年龄为20岁 | |
添加50个用户 | |
提交事务 | |
查询小明的年龄 此时变成了20 | |
查询用户列表 共150条数据 | |
提交事务 |
可重复读: 正在执行的事务 读取不到其他事务已提交或未提交的修改,但能读到其他事务已提交的插入 所以造成幻读
A事务 | B事务 |
---|---|
开始事务 | 开始事务 |
查询小明年龄 是30岁 | |
查询用户列表 共100条数据 | |
查询用户列表 共100条数据 | |
修改小明的年龄为20岁 | |
添加50个用户 | |
提交事务 | |
查询小明的年龄 此时还是30 | |
查询用户列表 此时150条数据 | |
提交事务 |
可串行化: 最高的默认级别,强制事务串行执行(即一个事务一个事务执行)。效率极其低下。
A事务 | B事务 |
---|---|
开始事务 | |
查询小明年龄 是30岁 | |
查询用户列表 共100条数据 | |
查询小明的年龄 是30岁 | |
查询用户列表 共100条数据 | |
提交事务 | |
开始事务 | |
修改小明的年龄为20岁 | |
添加50个用户 | |
提交事务 |