快速理解 脏读(未提交读),提交读(不可重复读), 可重复读, 可串行化 和 幻读

脏读(未提交读): 正在执行的事务 读取到其他事物未提交的数据

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个用户
提交事务

幻读: 正在执行的事务 读取倒了其他事务已提交的插入

不可重复读: 正在执行的事务 读取到了其他事务的修改

你可能感兴趣的:(后端)