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)

时间: 2024-11-08 17:32:15

MySQL InnoDB存储引擎的事务隔离级别的相关文章

【mysql】官方的SQL事务隔离级别文档

SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的.低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销. Read Uncommitted(读取未提交内容) 在该隔离级别,所有事务都可以看到其他未提交事务的执行结果.本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少.读取未提交的数据,也被称之为脏读(Dirty Read). Read Committed(读取提交内容) 这是大多数数据库系统的默认隔离级别(但不是MySQL默认的

简介MySQL InnoDB存储引擎的一些参数

InnoDB做为MySQL目前最广泛的事务存储引擎,很多地方的设计和Oracle都是共通的.对于Oracle DBA 来说,学习的时候可以多和Oracle的一些特性进行类比,当然也要明白二者之间的区别. innodb_additional_mem_pool_size 用于缓存InnoDB数据字典及其他内部结构的内存池大小,类似于Oracle的library cache.这不是一个 强制参数,可以被突破. innodb_buffer_pool_size 内存缓冲池大小,用于缓存表和索引数据等.类似

Mysql innodb存储引擎体系架构

MySQL中InnoDB存储引擎的锁的基本使用教程_Mysql

MyISAM和MEMORY采用表级锁(table-level locking) BDB采用页面锁(page-leve locking)或表级锁,默认为页面锁 InnoDB支持行级锁(row-level locking)和表级锁,默认为行级锁 各种锁特点 表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发生冲突的概率最高,并发度最低 行级锁:开销大,加锁慢:会出现死锁:锁定粒度最小,发生锁冲突的概率最低,并发度也最高 页面锁:开销和加锁时间介于表锁和行锁之间:会出现死锁:锁定粒度介于表锁和行锁之

《MySQL技术内幕:InnoDB存储引擎第2版》——1.3 MySQL存储引擎

1.3 MySQL存储引擎 通过1.2节大致了解了MySQL数据库独有的插件式体系结构,并了解到存储引擎是MySQL区别于其他数据库的一个最重要特性.存储引擎的好处是,每个存储引擎都有各自的特点,能够根据具体的应用建立不同存储引擎表.对于开发人员来说,存储引擎对其是透明的,但了解各种存储引擎的区别对于开发人员来说也是有好处的.对于DBA来说,他们应该深刻地认识到MySQL数据库的核心在于存储引擎. 由于MySQL数据库的开源特性,用户可以根据MySQL预定义的存储引擎接口编写自己的存储引擎.若用

《MySQL技术内幕:InnoDB存储引擎第2版》——2.1 InnoDB存储引擎概述

2.1 InnoDB存储引擎概述 InnoDB存储引擎最早由Innobase Oy公司开发,被包括在MySQL数据库所有的二进制发行版本中,从MySQL 5.5版本开始是默认的表存储引擎(之前的版本InnoDB存储引擎仅在Windows下为默认的存储引擎).该存储引擎是第一个完整支持ACID事务的MySQL存储引擎(BDB是第一个支持事务的MySQL存储引擎,现在已经停止开发),其特点是行锁设计.支持MVCC.支持外键.提供一致性非锁定读,同时被设计用来最有效地利用以及使用内存和CPU. Hei

《MySQL技术内幕:InnoDB存储引擎第2版》——3.7 小结

3.7 小结 本章介绍了与MySQL数据库相关的一些文件,并了解了文件可以分为MySQL数据库文件以及与各存储引擎相关的文件.与MySQL数据库有关的文件中,错误文件和二进制日志文件非常重要.当MySQL数据库发生任何错误时,DBA首先就应该去查看错误文件,从文件提示的内容中找出问题的所在.当然,错误文件不仅记录了错误的内容,也记录了警告的信息,通过一些警告也有助于DBA对于数据库和存储引擎进行优化. 二进制日志的作用非常关键,可以用来进行point in time的恢复以及复制(replica

《MySQL技术内幕:InnoDB存储引擎第2版》——3.6 InnoDB存储引擎文件

3.6 InnoDB存储引擎文件 之前介绍的文件都是MySQL数据库本身的文件,和存储引擎无关.除了这些文件外,每个表存储引擎还有其自己独有的文件.本节将具体介绍与InnoDB存储引擎密切相关的文件,这些文件包括重做日志文件.表空间文件.3.6.1 表空间文件InnoDB采用将存储的数据按表空间(tablespace)进行存放的设计.在默认配置下会有一个初始大小为10MB,名为ibdata1的文件.该文件就是默认的表空间文件(tablespace file),用户可以通过参数innodb_dat

MySQL的存储引擎对比

在上一篇关于<MySQL体系架构>的文章里提到MySQL最大的特色是其可插拔的插件式存储引擎,这篇文章将对比几个主流的存储引擎.这里要特别提一点,由于MySQL是开源的,所以如果你对某些存储引擎不满意,可以修改或写一个存储引擎,增加自己想要的特性,这也是MySQL作为开源数据库的优势之一. 下表显示了各种存储引擎的特性: 其中最常见的两种存储引擎是MyISAM和InnoDB 刚接触MySQL的时候可能会有些惊讶,竟然有不支持事务的存储引擎,学过关系型数据库理论的人都知道,事务是关系型数据库的核