java innodb存储引擎_MySQL InnoDB存储引擎的事务隔离级别
我们知道,在关系数据库标准中有四个事务隔离级别:未提交读(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存储引擎的事务隔离级别相关推荐
- mysql mvcc 读写阻塞_mysql面试题MVCC原理事务隔离级别_aiailingfei的博客-CSDN博客
原文作者:小小一只鸟 原文标题:mysql面试题MVCC原理事务隔离级别 发布时间:2021-01-19 19:43:38 mysql事务隔离级别可重复读面试题 熊大 话说今天漂亮的妹子给我发过一张图 ...
- Java面试题之Oracle 支持哪三种事务隔离级别
Oracle 支持三种事务隔离级别: 1.读已提交:(默认) 2.串行化: 3.只读模式 转载于:https://www.cnblogs.com/hujinshui/p/10463883.html
- mysql支持事务的存储引擎_MySQL基础(三)【MySQL事务与存储引擎】
3.1-数据库事务 什么是事务 一系列有序的数据库操作: 要么全部成功 要么全部回退到操作前的状态 中间状态对其他连接不可见 事务的基本操作: 基本操作 说明 start transaction 开始 ...
- mysql innodb 默认隔离级别_MySQL Innodb 事务隔离级别
在Mysql中,事务主要有四种隔离级别,今天我们主要是通过示例来比较下,四种隔离级别实际在应用中,会出现什么样的对应现象. Read uncommitted (未提交读) Read committed ...
- Spring事务管理--(一)数据库事务隔离级别与mysql引擎基础讲解
一.前言 本篇文章来自网络整理,很简单,但是很实用对于初级和中级工程师. 原创地址1:http://www.cnblogs.com/hollen/archive/2012/05/13/2498309. ...
- MySQL(InnoDB剖析):43---事务之(事务隔离级别:READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE)
ISO和ANIS SQL标准指定了4种事务隔离级别的标准,但是很少有数据库厂商循环这些标准.例如Oracle数据库就不支持READ UNCOMMITTED和REPEATABLE READ SQL标准定 ...
- Innodb事务隔离级别-repeatable read详解
ANSI/ISO SQL标准定义了4中事务隔离级别:未提交读(read uncommitted),提交读(read committed),重复读(repeatable read),串行读(serial ...
- InnoDB的几种事务隔离级别
前文 首先理解事务的ACID的隔离性 并发带来的问题,脏读 .不可重复读 .幻读 的问题. 脏读: 一个事务读取了另一个事务未提交的数据,导致数据不一致.[事务2未提交] 不可重复读: 一个事务前后两 ...
- mybatis 源码系列(七) Java基础之数据库事务隔离级别
更多mybatis 源码系列文章可关注我的博客,点击前往 正确设置数据库的事务访问级别,有助于我们的应用程序达到预期的效果 在mybatis中,提供了事务隔离级别的枚举类:org.apache.iba ...
最新文章
- 百度CTO王海峰阐释AI融合创新,降低门槛,按下产业智能化加速键
- 用VTK实现CT图片的三维重建过程
- python爬取app中的音频_Python爬取抖音APP,只需要十行代码
- python输入和输出的区别_python2和python3的输入和输出区别介绍
- find()matlab,Matlab 之 find()函数
- C/C++获取指定网口的IP地址
- Python+pandas实现时间序列数据扩展案例一则
- linux pause函数的一点小探索
- vrep小车模型搭建
- DBeaver Enterprise 算法注册机
- SPSS中如何进行快速聚类分析
- linux查看进程的代码,Linux ps 查看进程(示例代码)
- !!!python 100行代码编写【Google 图片搜索爬取工具】多线程
- DP(Nietzsche)的hu测 T1(状压dp)
- migration mysql_MySQL Migration Tool 使用 | 学步园
- 本地服务(local Service)的实现
- 【历史上的今天】11 月 11 日:腾讯成立;信息论先驱出生;阿德曼提出 DNA 计算
- 有关H5第六章的背景与阴影介绍
- springboot + Vue 整合阿里云视频点播 | Spring Boot 20
- 高低温磁场型霍尔效应测试仪的设计方案