MySQL中事务隔离级别与MVCC机制有何关联?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1293个文字,预计阅读时间需要6分钟。
事务隔离级别可能引发的问题包括:- 脏读- 不可重复读- 幻读- 事务间对增删改互相影响- 虚读- 读取未提交事务的数据- 重复读取数据- 同一事务多次执行一个SELECT读取到的数据前后不一致
事务隔离级别事务并发可能出现的问题
- 脏写 事务之间对增删改互相影响
- 脏读 事务之间读取其他未提交事务的数据
- 不可重复读 一个事务在多次执行一个select读到的数据前后不相同。因为被别的未提交事务修改,删除数据或数据被更新被当前事务读取到了。
- 幻读 一个事务在第一次读取正常数据,第二次读取到其他未提交事务的insert记录,导致读取一个不存在的记录。指一次读取读取到了之前未读取到的数据。
事务的4个隔离级别,以及解决的问题
- READ UNCOMMITTED 未提交读 解决脏写
- READ COMMITTED提交读 解决脏写、脏读
- REPEATABLE READ可重复读 解决脏写、脏读、不可重复读
- SERIALIAZBLE可串行化 解决脏写、脏读、不可重复读、幻读
四个隔离级别和可以解决的问题是SQL专门规定的,但是在Innodb引擎下,在可重复读的隔离级别的下就可以直接解决幻读的问题。
我们可以在启动时指定系统参数修改系统默认的隔离级别,默认为可重复读。
本文共计1293个文字,预计阅读时间需要6分钟。
事务隔离级别可能引发的问题包括:- 脏读- 不可重复读- 幻读- 事务间对增删改互相影响- 虚读- 读取未提交事务的数据- 重复读取数据- 同一事务多次执行一个SELECT读取到的数据前后不一致
事务隔离级别事务并发可能出现的问题
- 脏写 事务之间对增删改互相影响
- 脏读 事务之间读取其他未提交事务的数据
- 不可重复读 一个事务在多次执行一个select读到的数据前后不相同。因为被别的未提交事务修改,删除数据或数据被更新被当前事务读取到了。
- 幻读 一个事务在第一次读取正常数据,第二次读取到其他未提交事务的insert记录,导致读取一个不存在的记录。指一次读取读取到了之前未读取到的数据。
事务的4个隔离级别,以及解决的问题
- READ UNCOMMITTED 未提交读 解决脏写
- READ COMMITTED提交读 解决脏写、脏读
- REPEATABLE READ可重复读 解决脏写、脏读、不可重复读
- SERIALIAZBLE可串行化 解决脏写、脏读、不可重复读、幻读
四个隔离级别和可以解决的问题是SQL专门规定的,但是在Innodb引擎下,在可重复读的隔离级别的下就可以直接解决幻读的问题。
我们可以在启动时指定系统参数修改系统默认的隔离级别,默认为可重复读。

