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

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

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

测试锁力度

Oracle read committed:

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

Table created.

Oracle:

Session:3401

select * from twhere value=55 for update

Session:7

select * from twhere value=56 for update

无阻塞;

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

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里可以看到阻塞:

那么为什么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;

此时Master的t中有一行记录3,而Slave的t为空,造成不一致;如果是repeatable read则session2的insert会被gap lock住;

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

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

Oralce/MySQL 默认隔离级别对比相关推荐

  1. Mysql默认隔离级别为什么是可重复读?

    知识点总结 1.数据库默认隔离级别: mysql -可重复读: oracle,postgres -已提交读 2.mysql binlog的格式三种:statement,row,mixed 3.为什么m ...

  2. SpringCloud工作笔记054---事物处理_MySQL的四种事务隔离级别_以及修改Mysql默认隔离级别

    JAVA技术交流QQ群:170933152 Mysql修改默认隔离级别: MySQL mysql默认的事务处理级别是'REPEATABLE-READ',也就是可重复读 1.查看当前会话隔离级别 sel ...

  3. [转]为什么mysql默认隔离级别设置为可重复读

    一般的DBMS系统,默认都会使用读提交(Read-Comitted,RC)作为默认隔离级别,如Oracle.SQLServer等,而MySQL却使用可重复读(Read-Repeatable,RR).要 ...

  4. mysql 并没有幻读_MySQL默认隔离级别REPEATABLE-READ并没有解决幻读问题

    刷脉脉,发现一个帖子讨论幻读问题: https://maimai.cn/web/gossip_detail?src=app&webid=eyJhbGciOiJIUzI1NiIsInR5cCI6 ...

  5. MySQL事务隔离级别及演示

    目录 事务的概述 事务的隔离级别 事务的隔离级别的演示:演示脏读 事务的隔离级别的演示:避免脏读和不可重复读的发生 事务的隔离级别的演示:避免不可重复读 事务的隔离级别的演示:演示串行化 事务的概述 ...

  6. mysql事务隔离级别

    SQL中定义了4中隔离级别,不同的隔离级别对应着事务中做不同的修改,同时在事务内和事务间的可见性也不同.越低的隔离级别越能支持更高的并发,对系统的开销也越低. 四种隔离级别: 1. read unco ...

  7. mysql 默认事务隔离级别_上个厕所的功夫,搞懂MySQL事务隔离级别

    "隔离级别" 出于MySQL四大特性(ACID)中的"I",也就是隔离性.目的是实现数据.事务一致性"C". MySQL在多线程并发场景下, ...

  8. MYSQL系列---默认隔离级别所引发的问题

    1.事务的隔离级别: 1 .原子性.事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做 2 .一致性.事 务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态.因此当数据库只 ...

  9. 阿里 mysql默认的隔离级别_mysql的默认隔离级别

    1.数据库默认隔离级别:  mysql ---repeatable,oracle,sql server ---read commited 2.mysql binlog的格式三种:statement,r ...

  10. 数据库隔离级别---MySQL的默认隔离级别就是Repeatable,Oracle默认Read committed,最高级别Serializable

    目录 Read uncommitted 读未提交 Read committed 读提交 Repeatable read 重复读 Serializable 序列化 什么是脏读 重复读与幻读 隔离级别与锁 ...

最新文章

  1. 零基础自学python教程-零基础人员可以学习python吗?|Python培训基础教程
  2. @pathVariable 映射URL绑定的占位符
  3. Oracle将NetBeans交给了Apache基金会
  4. 在本地安装git的HTML帮助文档
  5. 矩阵儿快速幂 - POJ 3233 矩阵力量系列
  6. php yaf smarty,Yaf 结合用户自定义的视图(模板)引擎Smarty(Yaf + Smarty)
  7. 阿里高级技术专家:研发效能的追求永无止境
  8. IDEA JDK1.8 ProGuard 混淆Maven项目代码
  9. 3万亿巨大市场,难怪马云、刘强东要抢着去养猪
  10. [转]Linux中常见目录简介
  11. 解决“重新安装vmware-tools”灰色而无法安装的问题
  12. Bailian4068 判断是否可以构成等差数列【字符串流+排序】
  13. 微波浅谈(一)更新中
  14. eclipse环境NDK问题汇总
  15. BZOJ1934[SHOI2007] Vote 善意的投票
  16. 南方cass字体样式设置_cass改变字体格式 cass字体样式管理器
  17. Caused by: java.lang.NoSuchMethodException: init [class android.content.Context, interface andr解决
  18. MT7621路由器芯片/处理器参数介绍
  19. AES加密算法软件实现-Java
  20. RS-232C接口定义(DB9)

热门文章

  1. 解决CentOS内网机通过Windows下架设代理来访问网络
  2. Java集合框架类图
  3. 详解spring 每个jar的作用(转)
  4. javascript笔记——js面试问题
  5. (笔试题)被3和5整除的数的和
  6. 代码轻视频系列#001
  7. 介绍PS大局观很不错的转文
  8. JDBC数据库编程手记(2)
  9. iOS UICollectionView 注册步骤、使用方法以及 各种问题 和坑点
  10. Page Cache与Page回写