文档章节

Mysql的4种事务隔离级别详解

林词
 林词
发布于 09/18 20:05
字数 816
阅读 56
收藏 1

sql标准定义了4种隔离级别,包含了一些具体规则,用来限定事物内外的那些变化是可见的,哪些是不可见的。

低级别的隔离级一般支持更高的并发处理,拥有更低的系统开销。

1到4,4种隔离级别:

Read Uncommitt(读取未提交的内容)

Read Conmmitted(读取提交内容)

Repeatable read(可重读)

Serializable(可串行化)

查看事物隔离级别命令:

SELECT @@tx_isolation;

修改事物隔离级别命令:

set tx_isolation='read_committed'

脏读的含义:读取到未提交的数据。

新建一个表:

CREATE TABLE tes(
id INT PRIMARY KEY,
num INT
)

INSERT INTO tes VALUES(1,1),(2,2),(3,3);

启动一个事物修改事物级别为第一级别运行:

start transaction;

SELECT *FROM tes 

再启动一个事物修改表中的数据:

start transaction;
update tes set num=10 where id=1;
select * from tes;
ROLLBACK;
SELECT *FROM tes;

再在第一个事物中查询:

在第二个事物没有提交的情况下,第一个事物得到了第二个事物修改后的数据。

如果在第二个事物回滚后,第一个事物读到的数据又回到未修改的状态

这样就称为脏锁。

第一级别:Read Uncommitt(读取未提交的内容)
1.所有事物都可以看到其他未提交事物的执行结果。
2.该级别较少用于实际场景,性能没有优势。
3.会进行脏读,读取到未提交的数据。

 

第二级别:Read Conmmitted(读取提交内容)
1.大多数数据库系统的默认隔离级别(不是MySql默认级别)。
2.满足了单隔离的简单定义,一个事物只能看见已经提交事物的改变。
3.该隔离级别不可重复读(Nonrepeatable Read);不可重复读意味着我们在同一个事务中执行完全相同的select语句时可能看到不一样的结果。


第三级别:Repeatable read(可重读)
1.这是MySQL的默认事务隔离级别
2.它确保同一事务的多个实例在并发读取数据时,会看到同样的数据行
3.此级别可能出现幻读(Phantom Read):用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的“幻影” 行.
4.InnoDB和Falcon存储引擎通过多版本并发控制(MVCC,Multiversion Concurrency Control)机制解决了该问题

 

第4级别:Serializable(可串行化)
1.这是最高的隔离级别
2.它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之,它是在每个读的数据行上加上共享锁。
3.在这个级别,可能导致大量的超时现象和锁竞争

 

© 著作权归作者所有

林词
粉丝 1
博文 15
码字总数 8884
作品 0
私信 提问
事务的四大特性和隔离级别

一.什么是事务 事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所作的所有更改都会被撤消。 二.事务的 四个特性(ACID ) 事务具有四个特性:原子性( Atomic...

LYQ1990
2016/04/29
121
1
MySQL事务隔离级别详解

SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。 Read Uncommitted(...

风行韩国
2014/07/29
0
0
数据库事务详解

概述 事务(Transaction)是由一系列对系统中数据进行访问与更新的操作所组成的一个程序执行逻辑单元。 ACID 事务具有4个基本特征,分别是:原子性(Atomicity)、一致性(Consistency)、隔...

jijs
2018/01/06
0
0
事务隔离级别新看法!

前言 我前段时间在写代码的时候,经常考虑并发问题,对事物的安全性、隔离级别需要更深的了解,所以翻看了网上绝大部分关于事务的文章。但是看了之后还是有些疑惑,例如事务的四种隔离级别,...

Awisper
2016/01/10
341
3
mysql 4种事务隔离级别

SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。 Read Uncommitted(...

蛋定龙
2015/10/23
341
1

没有更多内容

加载失败,请刷新页面

加载更多

golang-字符串-地址分析

demo package mainimport "fmt"func main() {str := "map.baidu.com"fmt.Println(&str, str)str = str[0:5]fmt.Println(&str, str)str = "abc"fmt.Println(&s......

李琼涛
今天
4
0
Spring Boot WebFlux 增删改查完整实战 demo

03:WebFlux Web CRUD 实践 前言 上一篇基于功能性端点去创建一个简单服务,实现了 Hello 。这一篇用 Spring Boot WebFlux 的注解控制层技术创建一个 CRUD WebFlux 应用,让开发更方便。这里...

泥瓦匠BYSocket
今天
8
0
从0开始学FreeRTOS-(列表与列表项)-3

FreeRTOS列表&列表项的源码解读 第一次看列表与列表项的时候,感觉很像是链表,虽然我自己的链表也不太会,但是就是感觉很像。 在FreeRTOS中,列表与列表项使用得非常多,是FreeRTOS的一个数...

杰杰1号
今天
9
0
Java反射

Java 反射 反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的 Class,Class 类 用于表示.class 文件(字节码)) 一、反射的概述 定义:JAVA 反射机制是在运行状态中,对于任...

zzz1122334
今天
7
0
聊聊nacos的LocalConfigInfoProcessor

序 本文主要研究一下nacos的LocalConfigInfoProcessor LocalConfigInfoProcessor nacos-1.1.3/client/src/main/java/com/alibaba/nacos/client/config/impl/LocalConfigInfoProcessor.java p......

go4it
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部