我们知道,在关系数据库标准中有四个事务隔离级别:未提交读(Read Uncommitted):允许脏读,也就是可能读取到其他会话中未提交事务修改的数据

提交读(Read Committed):只能读取到已经提交的数据。Oracle等多数数据库默认都是该级别

可重复读(Repeated Read):可重复读。在同一个事务内的查询都是事务开始时刻一致的,InnoDB默认级别。在SQL标准中,该隔离级别消除了不可重复读,但是还存在幻象读

串行读(Serializable):完全串行化的读,每次读都需要获得表级共享锁,读写相互都会阻塞

查看InnoDB系统级别的事务隔离级别:

mysql> SELECT @@global.tx_isolation;+-----------------------+| @@global.tx_isolation |+-----------------------+| REPEATABLE-READ       |+-----------------------+1 row in set (0.00 sec)

查看InnoDB会话级别的事务隔离级别:

mysql> SELECT @@tx_isolation;+-----------------+| @@tx_isolation  |+-----------------+| REPEATABLE-READ |+-----------------+1 row in set (0.00 sec)

修改事务隔离级别:

mysql> set global transaction isolation level read committed;Query OK, 0 rows affected (0.00 sec)mysql> set session transaction isolation level read committed;Query OK, 0 rows affected (0.00 sec)

InnoDB的可重复读隔离级别和其他数据库的可重复读是有区别的,不会造成幻象读(phantom read),所谓幻象读,就是同一个事务内,多次select,可以读取到其他session insert并已经commit的数据。下面是一个小的测试,证明InnoDB的可重复读隔离级别不会造成幻象读。测试涉及两个session,分别为session 1和session 2,隔离级别都是repeateable read,关闭autocommit

mysql> select @@tx_isolation;+-----------------+| @@tx_isolation  |+-----------------+| REPEATABLE-READ |+-----------------+1 row in set (0.00 sec)mysql> set autocommit=off;Query OK, 0 rows affected (0.00 sec)

session 1 创建表并插入测试数据

mysql> create table test(i int) engine=innodb;Query OK, 0 rows affected (0.00 sec)mysql> insert into test values(1);Query OK, 1 row affected (0.00 sec)

session 2 查询,没有数据,正常,session1没有提交,不允许脏读

mysql> select * from test;Empty set (0.00 sec)

session 1 提交事务

mysql> commit;Query OK, 0 rows affected (0.00 sec)

session 2 查询,还是没有数据,没有产生幻象读

mysql> select * from test;Empty set (0.00 sec)

以上试验版本:

mysql> select version();+-------------------------+| version()               |+-------------------------+| 5.0.37-community-nt-log |+-------------------------+1 row in set (0.00 sec)

--EOF--

java innodb存储引擎_MySQL InnoDB存储引擎的事务隔离级别相关推荐

  1. mysql mvcc 读写阻塞_mysql面试题MVCC原理事务隔离级别_aiailingfei的博客-CSDN博客

    原文作者:小小一只鸟 原文标题:mysql面试题MVCC原理事务隔离级别 发布时间:2021-01-19 19:43:38 mysql事务隔离级别可重复读面试题 熊大 话说今天漂亮的妹子给我发过一张图 ...

  2. Java面试题之Oracle 支持哪三种事务隔离级别

    Oracle 支持三种事务隔离级别: 1.读已提交:(默认) 2.串行化: 3.只读模式 转载于:https://www.cnblogs.com/hujinshui/p/10463883.html

  3. mysql支持事务的存储引擎_MySQL基础(三)【MySQL事务与存储引擎】

    3.1-数据库事务 什么是事务 一系列有序的数据库操作: 要么全部成功 要么全部回退到操作前的状态 中间状态对其他连接不可见 事务的基本操作: 基本操作 说明 start transaction 开始 ...

  4. mysql innodb 默认隔离级别_MySQL Innodb 事务隔离级别

    在Mysql中,事务主要有四种隔离级别,今天我们主要是通过示例来比较下,四种隔离级别实际在应用中,会出现什么样的对应现象. Read uncommitted (未提交读) Read committed ...

  5. Spring事务管理--(一)数据库事务隔离级别与mysql引擎基础讲解

    一.前言 本篇文章来自网络整理,很简单,但是很实用对于初级和中级工程师. 原创地址1:http://www.cnblogs.com/hollen/archive/2012/05/13/2498309. ...

  6. MySQL(InnoDB剖析):43---事务之(事务隔离级别:READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE)

    ISO和ANIS SQL标准指定了4种事务隔离级别的标准,但是很少有数据库厂商循环这些标准.例如Oracle数据库就不支持READ UNCOMMITTED和REPEATABLE READ SQL标准定 ...

  7. Innodb事务隔离级别-repeatable read详解

    ANSI/ISO SQL标准定义了4中事务隔离级别:未提交读(read uncommitted),提交读(read committed),重复读(repeatable read),串行读(serial ...

  8. InnoDB的几种事务隔离级别

    前文 首先理解事务的ACID的隔离性 并发带来的问题,脏读 .不可重复读 .幻读 的问题. 脏读: 一个事务读取了另一个事务未提交的数据,导致数据不一致.[事务2未提交] 不可重复读: 一个事务前后两 ...

  9. mybatis 源码系列(七) Java基础之数据库事务隔离级别

    更多mybatis 源码系列文章可关注我的博客,点击前往 正确设置数据库的事务访问级别,有助于我们的应用程序达到预期的效果 在mybatis中,提供了事务隔离级别的枚举类:org.apache.iba ...

最新文章

  1. 百度CTO王海峰阐释AI融合创新,降低门槛,按下产业智能化加速键
  2. 用VTK实现CT图片的三维重建过程
  3. python爬取app中的音频_Python爬取抖音APP,只需要十行代码
  4. python输入和输出的区别_python2和python3的输入和输出区别介绍
  5. find()matlab,Matlab 之 find()函数
  6. C/C++获取指定网口的IP地址
  7. Python+pandas实现时间序列数据扩展案例一则
  8. linux pause函数的一点小探索
  9. vrep小车模型搭建
  10. DBeaver Enterprise 算法注册机
  11. SPSS中如何进行快速聚类分析
  12. linux查看进程的代码,Linux ps 查看进程(示例代码)
  13. !!!python 100行代码编写【Google 图片搜索爬取工具】多线程
  14. DP(Nietzsche)的hu测 T1(状压dp)
  15. migration mysql_MySQL Migration Tool 使用 | 学步园
  16. 本地服务(local Service)的实现
  17. 【历史上的今天】11 月 11 日:腾讯成立;信息论先驱出生;阿德曼提出 DNA 计算
  18. 有关H5第六章的背景与阴影介绍
  19. springboot + Vue 整合阿里云视频点播 | Spring Boot 20
  20. 高低温磁场型霍尔效应测试仪的设计方案

热门文章

  1. 数据传输服务 DTS > 产品简介 > 功能特性 > 数据订阅(新版)
  2. VCAP6 – DCV DESIGN COLLECTION
  3. RoterOS负载均衡教程
  4. Java多线程学习总结(3)——Java线程的6种状态及切换
  5. Mysql学习总结(64)——Mysql配置文件my.cnf各项参数解读
  6. python大气校正_Python 处理遥感图像:光谱辐射定标、大气校正和计算反射率
  7. Spring Boot中扩展XML请求和响应的支持
  8. mycat分布式mysql中间件(自增主键)
  9. 【转】拷贝构造函数的参数类型必须是引用
  10. huffman编码——原理与实现