mysql隔离级别选择_修改mysql事务隔离级别

mysql隔离级别选择_修改mysql事务隔离级别今天同事问Oracle里的一致读也会像MySQL默认的锁住扫描的行吗?首先要明确Oracle里支持的隔离级别:readcommitted/serializable,默认的是readcommitted,而MySQl支持的隔离级别:readuncommitted/readcommitted/repeatableread/serializable,…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

今天同事问Oracle里的一致读也会像MySQL默认的锁住扫描的行吗?

首先要明确Oracle里支持的隔离级别:read committed/serializable,默认的是read committed,而MySQl支持的隔离级别:read uncommitted/read committed/repeatable read/serializable,默认的是repeatable read;

先说结论:Oracleread committed的锁力度和隔离级别相当于MySQLread committed,因此Oracle里默认的一致读对

测试锁力度

Oracle read committed

SQL> createtable t(id primary key ,value ) as select rownum,mod(rownum,100) fromdba_objects /

Table created.

Oracle

Session3401

select * from twhere value=55 for update

Session7

select * from twhere value=56 for update

无阻塞;

Session 3401不提交,Session 7执行select * from t wherevalue=55 for update时发生阻塞:

004922909.png

MySQL repeatable read

Session 1

mysql> select* from t where value=55 for update;

Session 2

mysql> select* from t where value=56 for update;

information_schema里可以看到阻塞:

004922298.png

004922295.png

那么为什么MySQL默认的隔离级别是repeatable read呢?其实这是个历史原因:在MySQL5.0时,binlog_format只支持Statement,如果设置隔离级别为read committed会导致主从不一致,简例如下:

mysql> select * from t;

+——+

| id |

+——+

| 1|

| 2|

| 4|

| 5|

+——+

Session1 onmaster:

Begin;

Delete from twhere id<=5;

Session2 onmaster:

Insert into tvalues(3);

Commit;

Session 1 onmaster:

Commit;

此时Mastert中有一行记录3,而Slavet为空,造成不一致;如果是repeatable readsession2insert会被gap lock住;

MySQL5.1之后binlog支持ROW模式,在该模式下使用read committed上述情况则不成立;



本文转自MIKE老毕 51CTO博客,原文链接:http://blog.51cto.com/boylook/1307762,如需转载请自行联系原作者


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/194850.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • iOS越狱包「建议收藏」

    iOS越狱包「建议收藏」编译完了的程序是xxx.app文件夹,我们需要制作成ipa安装包,方便安装找一个不大于500*500的png图片(程序icon图标即可),改名为:iTunesArtwork,注意不能有后缀名。建立一个文件夹,名为:Payload,把刚才编译的xxx.app拷贝到这个文件夹里面。然后选中Payload和iTunesArtwork,右键生成压缩zip文件,比如:xxx.zip,把后缀名

  • IDEA git配置[通俗易懂]

    1、idea配置git(versioncontrol)1.2、拉取代码idea菜单上选择VCS输入git代码地址,注意是http协议的地址不要用git协议的地址,目前用git协议的地址老是报错,因为git协议的址找不到配置sshprivatekey的地方,后面找到方法再更一版。点确定,代码就可以拉下来了。1.3、拉取代码提交代码快捷键ct…

  • Android开发前景(海洋药物开发前景)

    一、Android的产生过程和发展1.概念:Android是一种基于Linux的自由及开放源代码的操作系统,现在的主要适用范围一般是为移动端设备,如一类安卓手机和平板电脑。最初的安卓系统由Google公司和开放手机联盟领导及开发,2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。第一部Android智能手机发布于2008年10月,随后安卓系统也由手机平台逐渐像像平板电脑以及其他领域扩展。2011年第一季度,Android在全球的市

  • H3C交换机常用配置命令大全

    H3C交换机常用配置命令大全H3C交换机常用配置命令大全一.用户配置:&lt;H3C&gt;system-view[H3C]superpasswordH3C设置用户分级密码[H3C]undosuperpassword删除用户分级密码[H3C]localuserbigheap1234561Web网管用户设置,1(缺省)为管理级用户…

  • css怎么设置注释快捷键,html中注释的快捷键是

    css怎么设置注释快捷键,html中注释的快捷键是html中注释的快捷键是command或ctrl+/超文本标记语言(HyperTextMarkupLanguage),标准通用标记语言下的一个应用。HTML不是一种编程语言,而是一种标记语言(markuplanguage),是网页制作所必备的。“超文本”就是指页面内可以包含图片、链接,甚至音乐、程序等非文字元素。超文本标记语言(或超文本标签语言)的结构包括“头”部分、和“主体”部分,其中“…

  • B/S架构及其运行原理

    目录一.B/S的概念二.B/S工作原理三.B/S的优点:四.B/S体系结构的特点:五.与传统C/S的联系与区别:一.B/S的概念B/S(Brower/Server,浏览器/服务器)模式又称B/S结构,是Web兴起后的一种网络结构模式。Web浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号