广告
返回顶部
首页 > 资讯 > 数据库 >MySQL 事务的隔离级别
  • 724
分享到

MySQL 事务的隔离级别

MySQL事务的隔离级别 2019-01-27 15:01:37 724人浏览 猪猪侠
摘要

1. 事务的ACID 事务的ACID是指事务拥有的4个特性的首字母组合:atomicity(原子性), consistency(一致性), isolation(隔离性)和durability(持久性)。 ①atomicity(原子

MySQL 事务的隔离级别

1. 事务的ACID

事务的ACID是指事务拥有的4个特性的首字母组合:atomicity(原子性), consistency(一致性), isolation(隔离性)和durability(持久性)。

①atomicity(原子性):表示事务是一个不可分割的工作单元,要么在提交事务后所有更改成功,要么在回滚事务时撤消所有更改,不可以只执行其中的一部分操作。

②consistency(一致性):在每次提交、回滚之后或正在进行的事务,数据库始终保持一致状态。如正在跨多个表更新相关数据,则查询看到的将是所有旧值或所有新值,而不是新值和旧值的混合。

③isolation(隔离性):事务在进行过程中相互隔离,他们不能互相干扰,也不能看到彼此的未提交数据。但可以通过修改隔离级别,查看其他事务正在处理的数据。

④durability(持久性):事务提交成功后,该事务所做的更改将会保存在数据库中。

 

2. 并发读取数据的问题

当事务读取另一个事务已修改的数据时,可能会发生dirty read(脏读)、non-repeatable read(不可重复读)和phantom read(幻读)之类的现象。

①dirty read(脏读):当前事务读取了另一个事务已更新但尚未提交的数据。后果就是另一个事务回滚了,此数据就为错误的无效数据。

②non-repeatable read(不可重复读):当前事务读取相同数据2次的过程期间,另一个事务修改了此数据并提交,造成当前事务读取的2次结果不一致。

③phantom read(幻读):当前事务读取相同数据2次的过程期间,另一个事务插入了新行或更新一行以此造成当前事务读取的2次结果不一致。看上不可重复读与幻读两者差不多,但不可重复读偏向于行的修改,幻读偏向于行的新增。

 

3. 隔离级别

隔离级别是一种用于在多个事务同时进行更改和执行查询时修改事务隔离性(isolation)的设置,权衡事务的保护以提高性能和并发性。

InnoDB储存引擎支持的隔离级别有(从低到高): READ UNCOMMITTED(未提交读)、 READ COMMITTED(已提交读)、REPEATABLE READ(可重复读) 和 SERIALIZABLE(可串行话)。

3.1 READ UNCOMMITTED(未提交读)

说明:为最低的隔离级别,表示当前事务可以读取其他事务已修改但未提交的数据。这个级别会导致很多问题,通常,具有此隔离级别的事务仅执行查询,而不执行插入,更新或删除操作。

 

3.2 READ COMMITTED(已提交读)

说明:事务无法看到来自其他事务未提交的数据,简单来讲一个事务从开始直到提交前,所做的任何修改对其他事务而言是不可见的。

 

3.3 REPEATABLE READ(可重复读)

说明:InnoDB的默认隔离级别。保证了在同一个事务内多次读取同样的记录的结果为一致。

 

3.4 SERIALIZABLE(可串行化)

说明:为最高的隔离级别,表示事务一个接一个的串行执行,访问同一资源时,后面的事务必须等待前面的事务操作完成后才能进行操作。

 

4. 总结

4.1 关系

不同的隔离级别解决脏读、不可重复读和幻读的问题也不一样,关系如下:

隔离级别 dirty read(脏读) non-repeatable read(不可重复读) phantom read(幻读)
READ UNCOMMITTED(未提交读) 未解决 未解决 未解决
READ COMMITTED(已提交读) 已解决 未解决 未解决
REPEATABLE READ(可重复读) 已解决 已解决 未解决
SERIALIZABLE(可串行化) 已解决 已解决 已解决

 

4.2 已提交读与可重复读的区别

两者的主要区别在于不可重复读的策略。

例如事务A读取了2次行R1,在读取2次期间事务B对行R1进行了修改,那么:

当隔离级别为READ COMMITTED(已提交读)时:事务A读取2次行R1的数据不一样。

当隔离级别为REPEATABLE READ(可重复读)时:事务A读取2次行R1的数据一样。

 

5. 参考资料

脏读、不可重复读和幻读https://dev.Mysql.com/doc/refman/5.6/en/glossary.html#glos_read_phenomena

隔离级别Https://dev.mysql.com/doc/refman/5.6/en/glossary.html#glos_isolation_level

 

您可能感兴趣的文档:

--结束END--

本文标题: MySQL 事务的隔离级别

本文链接: https://www.lsjlt.com/news/4924.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL事务隔离级别
      四类隔离级别    SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。  Read Unc...
    99+
    2022-10-18
  • MySQL 事务的隔离级别
    1. 事务的ACID 事务的ACID是指事务拥有的4个特性的首字母组合:atomicity(原子性), consistency(一致性), isolation(隔离性)和durability(持久性)。 ①atomicity(原子...
    99+
    2019-01-27
    MySQL 事务的隔离级别
  • MySQL的事务隔离级别
    目录数据库事务的四大特性⑴ 原子性(Atomicity)⑵ 一致性(Consistency)⑶ 隔离性(Isolation)⑷ 持久性(Durability)SQL的4种隔离级别Read Uncommitted(读取未提交内容)R...
    99+
    2021-07-07
    MySQL的事务隔离级别
  • mysql事务隔离的级别
    这篇文章主要介绍“mysql事务隔离的级别”,在日常操作中,相信很多人在mysql事务隔离的级别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”mysql事务隔离的级别”的疑惑...
    99+
    2022-10-18
  • 【MySQL】事务及其隔离性/隔离级别
    需要云服务器等云产品来学习Linux的同学可以移步/-->腾讯云-->阿里云-->华为云 show variables like 'autocommit';+---------------+-------+| Variable_name...
    99+
    2023-09-01
    mysql 数据库
  • mysql事务隔离级别详情
    serializable 串行化(无问题) 事务必须以顺序的方式执行,前一个事务提交之前后面的事务无法进行提交,最安全,但是不能并发操作,导致效率低下. repeatab re...
    99+
    2022-11-12
  • MySQL事务隔离级别详解
    一、什么是事务? 事务是逻辑上的一组操作,要么全执行,要么全不执行。 事务最经典栗子也经常被拿出来的栗子就是银行转账了。比如小明要给小红转账1000元,这个转账会涉及到两个关键操作:将小明的余额减1000元,将小红的余额减1000元。万一这...
    99+
    2023-08-30
    mysql
  • MySQL锁与事务隔离级别
    1、概述 (1)锁的定义 锁是计算机协调多个进程或线程并发访问某一资源的机制。 在数据库中,除了传统的计算资源(如CPU、RAM、IO等)的争用以外,数据也是一种供需要用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据...
    99+
    2021-12-05
    MySQL锁与事务隔离级别
  • MySQL基础——事务隔离级别
    事务是DBMS得执行单位。它由有限得数据库操作序列组成得。但不是任意得数据库操作序列都能成为事务。一般来说,事务是必须满足4个条件(ACID) ①:原子性(Autmic):事务在执行性,要做到“要...
    99+
    2022-10-18
  • MYSQL事务的隔离级别与MVCC
    目录前言1. 事务(transaction)的起源1.1. 事务的定义1.2. 哪些存储引擎支持事务2. MySQL的事务语法2.1. 自动提交2.2. 手动操作事务2.2.1. 开...
    99+
    2022-11-13
  • MySQL事务的隔离级别详情
    目录一、隔离级别的概念二、测试TRANSACTION_READ_UNCOMMITTED隔离级别三、测试TRANSACTION_READ_COMMITTED隔离级别四、测试TRANSACTION_REPEATABLE_RE...
    99+
    2022-07-14
    MySQL事务的隔离级别 MySQL事务隔离
  • MySQL的四种事务隔离级别
      环境:Windows 10+cmd+MySQL5.6.36+InnoDB 一、事务的基本要素(ACID) 1.原子性(Atomicity): 事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中...
    99+
    2016-09-03
    MySQL的四种事务隔离级别
  • MySQL的事务隔离级别介绍
    本篇内容介绍了“MySQL的事务隔离级别介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是事务?数据...
    99+
    2022-10-18
  • 事务隔离级别
    事务隔离是数据库处理的基础之一,Isolation是ACID中I的缩写,当多个事务同时进行更改和执行查询时,隔离级别是微调性能和可靠性、一致性和结果再现性之间的平衡的设置 MySQL支持以下几个隔离级别 ...
    99+
    2022-10-18
  • 事务隔离性和隔离级别
    隔离性是当多个用户并发访问数据库时,比如同时操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离 事务的隔离级别有哪些? 一、概念 Read uncommitted(读未提交) Read ...
    99+
    2021-04-27
    事务隔离性和隔离级别
  • MySQL 事务 异常 事务隔离的级别 - G
    MySQL 事务 异常 事务隔离的级别   事务 在你操作数据库的同时,有可能其他用户还会不断地对数据进行增删改查操作。为了避免并行进行时出现混乱,就产生了“事务”。事务就是要保证一组数据库操作,要么全部成功要么全部失败,以此来保...
    99+
    2021-07-20
    MySQL 事务 异常 事务隔离的级别 - G
  • MySQL事务隔离级别、锁信息
    MySQL事务隔离级别、锁信息 ...
    99+
    2022-10-18
  • MySQL事务隔离级别有哪些
    这篇文章给大家介绍MySQL事务隔离级别有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。说说事务的隔离级别吧老实说,事务隔离级别这个问题,无论是校招还是社招,面试官都爱问!然而目前...
    99+
    2022-10-18
  • MySQL有哪些事务隔离级别
    MySQL有哪些事务隔离级别,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。数据库事务有四种隔离级别:未提交读(Read Unc...
    99+
    2022-10-18
  • mysql的事务隔离级别是什么
    这篇“mysql的事务隔离级别是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“mysq...
    99+
    2023-01-31
    mysql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作