mysql事务的隔离级别和acid

author author     2022-12-06     492

关键词:

在MySQL中隔离性有4种级别,

read-uncommitted (读未提交 ;会产生脏读,不可重复读,幻读)
在该隔离级别,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为它的性能也不比其他级别好多少。读取未提交的数据,也被称之为脏读(Dirty Read)。
read-committed (读提交;产生不可重复读和幻读)
这是大多数数据库系统的默认隔离级别(但不是MySQL默认的)。它满足了隔离的简单定义:一个事务只能看见已经提交事务所做的改变。这种隔离级别 也支持所谓的不可重复读(Nonrepeatable Read),因为同一事务的其他实例在该实例处理其间可能会有新的commit,所以同一select可能返回不同结果
repeatable-read (可重读;)
默认级别,innodb的MVCC配合间隙锁部分解决幻读。不能解决的部分幻读是当事务A去修改事务B已经提交的数据的时候还是会产生幻读。 系统默认的隔离级别

serializable (可串行化;完全解决幻读只能串行化。)

这是最高的隔离级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之,它是在每个读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁竞争。
这四种隔离级别采取不同的锁类型来实现,若读取的是同一个数据的话,就容易发生问题。例如:
脏读(Drity Read):某个事务已更新一份数据,另一个事务在此时读取了同一份数据,由于某些原因,前一个RollBack了操作,则后一个事务所读取的数据就会是不正确的。
不可重复读(Non-repeatable read):在一个事务的两次查询之中数据不一致,这可能是两次查询过程中间插入了一个事务更新的原有的数据。
幻读(Phantom Read):在一个事务的两次查询中数据笔数不一致,例如有一个事务查询了几列(Row)数据,而另一个事务却在此时插入了新的几列数据,先前的事务在接下来的查询中,就会发现有几列数据是它先前所没有的。
什么是ACID
我认为的是,在我们执行操作时,有始有终,要么不做,要么做好。等同于事务中的所有操作要么全部执行成功,那么全部执行失败。
ACID的四大特性
atomicity(原子性)
事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。通常,与某个事务关联的操作具有共同的目标,并且是相互依赖的。如果系统只执行这些操作的一个子集,则可能会破坏事务的总体目标。原子性消除了系统处理操作子集的可能性。
consistency(一致性)
事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如 B 树索引或双向链表)都必须是正确的。某些维护一致性的责任由应用程序开发人员承担,他们必须确保应用程序已强制所有已知的完整性约束。例如,当开发用于转帐的应用程序时,应避免在转帐过程中任意移动小数点。
isolation(隔离性)
一个事务所在修改时,未提交成功,其他事物一律不可干扰
durability(持久性)
事务完成之后,它对于系统的影响是永久性的。该修改即使出现致命的系统故障也将一直保持

mysql事务隔离级别的实现原理

文章目录一、什么是事务的隔离级别二、再看可重复读原理锁定读(当前读)一致性非锁定读(快照读)隐式锁定(两阶段锁)显式锁定三、总结一、什么是事务的隔离级别在数据库系统中,一个事务是指:由一系列数据库操作... 查看详情

数据库acid原则和事务隔离级别

...o默认在共享表空间ibdata里面,通过设置参数可以独立出来.事务隔离级别 查看详情

mysql事务篇:acid原则事务隔离级别及事务机制原理剖析

引言众所周知,​​MySQL​​数据库的核心功能就是存储数据,通常是整个业务系统中最重要的一层,可谓是整个系统的“大本营”,因此只要​​MySQL​​存在些许隐患问题,对于整个系统而言都是致命的。那此刻不妨思考一... 查看详情

mysql四种隔离级别

 事务的四个特征(ACID)事务具有四个特征:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持续性(Durability)。这四个特性简称为ACID特性。1、原子性。事务是数据库的逻辑工作单位,事务中包含的各操作要... 查看详情

再谈acid(代码片段)

在交易系统中,有了数据库的事务机制,只要确保每一笔交易都在事务中执行,我们的账户系统就很容易保证流水和余额数据的一致性。但是,ACID是一个非常严格的定义,或者说是理想的情况。如果要完全满足ACID,一个数据库... 查看详情

mysql--新手必备sql基础知识事务acid及隔离级别(代码片段)

❤️‍您好,我是贾斯汀,本文主要分享数据库的一些基础知识!❤️‍SQL什么是SQL?【百度百科】结构化查询语言(StructuredQueryLanguage)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和... 查看详情

mysql事物及隔离级别(代码片段)

阅读目录一、事务的基本要素(ACID)二、事务的四种隔离级别三、事务的并发问题四、MVCC在MySQL的InnoDB中的实现五MySQL死锁六EXPLAIN分析语句七锁的定义一、事务的基本要素(ACID)1、原子性(Atomicity)࿱... 查看详情

mysql事务原理&实战官方精译

事务隔离级别事务隔离是数据库处理的基础之一。隔离是I中的首字母 ​​ACID​​ ; 隔离级别是在多个事务同时进行更改和执行查询时,对结果的性能和可靠性,一致性和可重复性之间的平衡进行微调的设置。​​Inn... 查看详情

mysql事务(代码片段)

文章目录二、MySQL事务2.1、事务的概念2.2、事务的ACID特点①原子性(Atomicity)②一致性(Consistency)③隔离性(Isolation)ⅰ查询全局事务隔离级别:ⅱ查询会话事务隔离级别ⅲ设置全局事务隔离级别ⅳ... 查看详情

mysql事务(代码片段)

文章目录二、MySQL事务2.1、事务的概念2.2、事务的ACID特点①原子性(Atomicity)②一致性(Consistency)③隔离性(Isolation)ⅰ查询全局事务隔离级别:ⅱ查询会话事务隔离级别ⅲ设置全局事务隔离级别ⅳ... 查看详情

数据库的acid跟事务隔离级别

摘抄:http://blog.csdn.net/shuaihj/article/details/14163713-----------------------------------------------------------  ACID指数据库事务正确执行的四个基本要素:原子性(Atomicity),一致性(Consistency),隔离性(Isolation),持久性(Durability 查看详情

mysql事务隔离级别

...关系型数据库的ACID特性。  A(atomicity,原子性),指一个事务要么完全完成,要么全部回滚到起始状态,不存在中间状态。  C(Consistency,一致性),指在事务开始前与事务结束后,及在事务内部,数据的完整性结束不被破坏,即... 查看详情

数据库事务事务隔离级别以及锁机制详解

...,纯属个人学习总结,不对的地方还请指出! 什么是事务?事务是作为一个逻辑单元执行的一系列操作,要么一起成功,要么一起失败。一个逻辑工作单元必须有四个属性,称为ACID(原子性、致性、隔离性和持久性)属性... 查看详情

事务的acid

事务具有4个特征,分别是原子性、一致性、隔离性和持久性,简称事务的ACID特性;一、原子性(atomicity)一个事务要么全部提交成功,要么全部失败回滚,不能只执行其中的一部分操作,这就是事务的原子性二、一致性(consisten... 查看详情

mysql事务特性四种隔离级别(图示每一步的操作)和产生的问题(代码片段)

文章目录一、事务的特性(ACID)二、MySQL事务的隔离级别和产生的问题2.1、隔离级别2.1.1、查看隔离级别2.1.2、设置隔离级别2.2、隔离级别产生的`脏读`、`不可重复读`、`幻读`的问题2.2.1、脏读:2.2.2... 查看详情

事务与mysql隔离级别(代码片段)

事务定义:比如ABCD四个业务,作为一个事务,他们要么一起都执行完毕,要么都不执行。(只要有一个不成功,那么所有的都不可以成功)四个特性ACID原子性(Atomicity)整个事务中的所有操作,要么全都完成,要么全部不完成。事务... 查看详情

mysql的四种事务隔离级别

一、事务的基本要素(ACID)原子性(Atomicity):即不可分割性,事务要么全部被执行,要么全部不执行一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏。比... 查看详情

mysql数据库中默认事务隔离级别是?

MySQL数据库中默认事务隔离级别是?事务的基本要素(ACID)  1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的... 查看详情