mysql的隔离级别是什么

发布时间:2021-12-08 09:15:49 作者:iii
来源:亿速云 阅读:152

这篇文章主要介绍“mysql的隔离级别是什么”,在日常操作中,相信很多人在mysql的隔离级别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql的隔离级别是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

READ UNCOMMITTED
    SELECT语句以非锁定方式被执行,但是一个可能更早期版本的记录会被用到。因此,使用这个隔离级别,比如,读是不连贯的。这也被称为“脏读”( dirty read)。另外,这个隔离级别象READ COMMITTED一样作用;简而言之,在READ UNCOMMITTED的隔离级别下,开启事物但事物并未提交之前,对于其他的事物都是可见的,记住,从性能的角度上来说,这个级别不见得比其他隔离级别的好;一般情况下非常少用,除非特殊业务需求;

READ COMMITTED
    一个有些象Oracle的隔离级别。所有SELECT ... FOR UPDATE和SELECT ... LOCK IN SHARE MOD语句仅锁定索引记录,而不锁定记录前的间隙,因而允许随意紧挨着已锁定的记录插入新记录。 UPDATE和DELETE语句使用一个带唯一搜索条件的唯一的索引仅锁定找到的索引记录,而不包括记录前的间隙。在范围类型UPDATE和DELETE语句, InnoDB必须对范围覆盖的间隙设置next-key锁定或间隙锁定以及其它用户做的块插入。这是很必要的,因为要让MySQL复制和恢复起作用, “幽灵行”必须被阻止掉;简而言之,READ COMMITTED其实是解决了READ UNCOMMITTED的可重复读问题,即READ COMMITTED的隔离级别下,一个事物的开启到结束,它的所做的修改更新删除 对于其他事物而言都是不可见的;

REPEATABLE READ
    这是InnoDB的默认隔离级别。带唯一搜索条件使用唯一索引的SELECT ... FOR UPDATE, SELECT ... LOCK INSHARE MODE, UPDATE 和DELETE语句只锁定找到的索引记录,而不锁定记录前的间隙。用其它搜索条件,这些操作采用next-key锁定,用next-key锁定或者间隙锁定锁住搜索的索引范围,并且阻止其它用户的新插入。在持续读中,有一个与之前隔离级别重要的差别:在这个级别,在同一事务内所有持续读读取由第一次读所确定的同一快照。这个惯例意味着如果你在同一事务内发出数个无格式SELECT语句,这些SELECT语句对相互之间也是持续的;REPEATABLE READ解决了恶心的脏读情况,保证同一个事务在读取同样的记录的时候能够保证结果一致性;但是却没能解决幻读的问题,就是当一个事务在读取一个记录的同时,另外一个事物又在对这个记录进行插入操作,导致事物再次读取的时候产生换行

SERIALIZABLE
    这个级别类似REPEATABLE READ,但是所有无格式SELECT语句被 隐式转换成SELECT ... LOCK IN SHAREMODE。最高隔离级别,强制事务串行执行,可以说在对每个行数据加行锁,所以会导致很多锁的争用或者大量超时问题,性能很差,如果不是特殊的业务需求,一般不会选择这种情况;

附个图片(来自于高性能mysql):

mysql的隔离级别是什么

到此,关于“mysql的隔离级别是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

推荐阅读:
  1. mysql设置隔离级别
  2. mysql事务和隔离级别是什么?

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mysql

上一篇:mysql存储过程怎么理解

下一篇:基于MySQL的EMQ X Auth & ACL怎么使用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》