精华内容
下载资源
问答
  • 2022-02-03 21:06:19

    1、原子性:不可分割的最小操作单位,要么同时成功,要么同时失败。
    2、持久性:当事物提交或回滚后,数据库会持久化的数据保存。
    3、隔离性:多个事务之间相互独立。
    4、一致性:事务操作前后,数据总量不变

    更多相关内容
  • MySQL中事务四大特性的实现详解

    千次阅读 2022-01-20 09:49:58
    MySQL事务四大特性的实现基本概念原子性实现 基本概念 事务的四大特性ACID : 原子性Atomic : 事务的所有的SQL操作作为一原子工作单元执行.要么全部执行,要么全部不执行 一致性Consistent : 事务完成后,所有...

    基本概念

    • 事务的四大特性ACID :
      • 原子性Atomic : 事务的所有的SQL操作作为一个原子工作单元执行.要么全部执行,要么全部不执行
      • 一致性Consistent : 事务完成后,所有数据状态都是一致的
      • 隔离性Isolation : 如果有多个事务并发执行,那么每个事务做出的修改必须和其余的事务隔离
      • 持久性Duration : 事务完成后,对数据库中数据的修改会持久化存储
    • 事务的四种隔离级别:
    隔离级别脏读不可重复读幻读
    未提交读Read Uncommitted可能可能可能
    已提交读Read Committed不可能可能可能
    可重复读Repeatable Read不可能不可能可能
    序列化Serializable不可能不可能不可能

    原子性实现

    • MySQL数据库事务的原子性通过undo log实现
      • 事务的所有的增删改的修改操作的相反操作都会写入undo log中.比如事务执行一条insert语句,那么undo log就会记录一条对应的delete语句
      • undo log是一个逻辑文件,记录的是相对应的SQL语句.如果事务执行发生异常,导致事务无法成功提交,系统就会执行undo log中相对应的撤销操作,达到事务回滚的目的
      • undo log可以实现MVCC的多个版本并发控制

    隔离性实现

    已提交读

    • 已提交读Read Committed允许可重复读的实现策略:
      • 数据的读取不加锁,数据的写入,修改,删除需要加锁
      • 可以解决脏读的问题,无法避免不可重复读的问题
        在这里插入图片描述
    • 使用加锁策略后,不存在读取到脏数据的情况:
      • T1写数据x时,首先获取x的锁,导致T2的读操作等待
      • T1进行数据回滚后,释放锁 ,T2可以继续读取原来的数据

    可重复读

    • 可重复读Repeatable Read允许幻读的实现策略 : MVCC多个版本行控制策略
      在这里插入图片描述
    • 这种情况下会出现T1的更新操作后,导致T2两次读取的数据不一致:
      • 通过加行级锁无法解决读取数据不一致的问题:
        • T2首先读取x
        • T1经过加锁,解锁的步骤,更新x的值,提交事务
        • T2继续读取,读取出来的值是T1更新后的值
        • 这样T2两次读取的结果不一致
    • MVCC多版本行控制:
      • 行级锁是一个悲观锁 ,MVCC是一个乐观锁.乐观锁可以在一定程度上避免加锁操作,开销更低
      • InnoDBMVCC实现是通过保存数据在某个时间点的快照来实现的
      • 一个事务,不管执行多长时间,内部看到的数据是一致的.也就是说,事务在执行过程中不会相互影响
    • MVCC多版本行控制的具体实现:
      • 通过在每行记录后面保存两个隐藏的列来实现多版本行控制
      • 一个列保存了行的创建时的系统版本号
      • 一个列保存的行的过期时的系统版本号,也就是删除时的系统版本号
      • 每次开始一个新的事务,系统版本号就会递增
        • SELECT操作:
          • 只会查找版本早于或者等于当前事务版本的数据行.这样可以保证事务读取的行,要么是事务开始前就存在的行,要么是事务自身插入或者修改的行
          • 行的删除版本要么是未定义版本号,要么大于当前事务版本号.这样可以保证事务读取的行,在事务开始之前未删除
        • INSERT操作:
          • 将新插入的行保存当前版本号为行版本号
        • DELETE操作:
          • 将删除的行保存当前版本号为删除标识
        • UPDATE操作:
          • UPDATE操作作为DELETE操作和INSERT操作的组合
            • DELETE操作保存当前版本号到原来的行作为删除标识
            • INSERT操作的行保存当前版本号作为行版本号
    • MVCC多版本行控制策略可以确保一个事务中读取的是同一个数据库版本快照

    持久性实现

    • MySQL数据库事务的持久性是通过redo log实现的:
      • 事务的所有增删改的修改操作,数据库都会生成一条redo日志到redo log
      • redo log区别于undo log中记录的SQL语句 ,redo log记录的是事务对数据库的哪个数据页做了什么样的修改,属于物理日志
    • redo日志的使用场景:
      • 数据库系统直接崩溃,需要进行恢复
      • 通常情况下,数据库都会按时间点备份的策略,首先将数据库恢复到最近备份的时间点状态,然后读取这个时间点之后的redo log记录,重新执行相应记录,达到最终恢复的目的

    日志文件刷新策略

    • 日志文件undo log和redo log不是直接写入到磁盘中,而是写入log buffer,然后等待合适的时机同步到OS buffer,然后由操作系统决定刷新到磁盘的时间
      在这里插入图片描述
    • MySQL主要有三种日志刷新策略:
      • 每次事务提交写入OS buffer, 并调用fsync刷新到磁盘中
      • 每秒写入OS buffer, 并调用fsync刷新到磁盘中
      • 每秒提交写入OS buffer, 然后每秒调用fsync刷新到磁盘中
    • MySQL默认使用第一种日志刷新策略,安全性依次下降,效率依次上升
    展开全文
  • MySQL事务四大特性以及如何保证

    千次阅读 2022-03-30 09:46:45
    1.MySQL事务四大特性: 我们以从A账户转账50元到B账户为例进行说明一下ACID,四大特性。 原子性 原子性是指一事务是一不可分割的工作单位,其中的操作要么都做,要么都不做。即要么转账成功,要么转账失败,...

    1.MySQL事务四大特性:

    我们以从A账户转账50元到B账户为例进行说明一下ACID,四大特性。

    原子性

    原子性是指一个事务是一个不可分割的工作单位,其中的操作要么都做,要么都不做。即要么转账成功,要么转账失败,是不存在中间的状态!
    如果无法保证原子性会怎么样?
    OK,就会出现数据不一致的情形,A账户减去50元,而B账户增加50元操作失败。系统将无故丢失50元~

    隔离性

    隔离性是指多个事务并发执行的时候,事务内部的操作与其他事务是隔离的,并发执行的各个事务之间不能互相干扰。

    持久性

    持久性是指事务一旦提交,它对数据库的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。

    一致性

    致性是指事务执行前后,数据处于一种合法的状态,这种状态是语义上的而不是语法上的。
     

    2:MySQL如何保证ACID?

    从数据库层面上说,一致性是最终目的,数据库通过原子性、隔离性、持久性来实现一致性。

    但是,如果你在事务里故意写出违反约束的代码,一致性还是无法保证的。例如,你在转账的例子中,你的代码里故意不给B账户加钱,那一致性还是无法保证。因此,还必须从应用层角度考虑

    原子性:

    Innodb中的undo log可以是实现原子性的关键,当事务回滚时会撤销所有已经执行完毕的sql语句,但是需要记录回滚的日志信息。

    例如

    • (1)当你delete一条数据的时候,就需要记录这条数据的信息,回滚的时候,insert这条旧数据

    • (2)当你update一条数据的时候,就需要记录之前的旧值,回滚的时候,根据旧值执行update操作

    • (3)当你insert一条数据的时候,就需要这条记录的主键,回滚的时候,根据主键执行delete操作

    undo log记录了这些回滚需要的信息,当事务执行失败或调用了rollback,导致事务需要回滚,便可以利用undo log中的信息将数据回滚到修改之前的样子。

    持久性:

    innodb中的redo log可以保证持久性。Mysql是先把磁盘上的数据加载到内存中,在内存中对数据进行修改,再刷回磁盘上。如果此时突然宕机,内存中的数据就会丢失。

    redo log解决上面的问题。当做数据修改的时候,不仅在内存中操作,还会在redo log中记录这次操作。当事务提交的时候,会将redo log日志进行刷盘(redo log一部分在内存中,一部分在磁盘上)。当数据库宕机重启的时候,会将redo log中的内容恢复到数据库中,再根据undo log和bin log内容决定回滚数据还是提交数据。

    隔离性:

    Mysql利用锁和MVCC多版本并发控制(Multi Version Concurrency Control)来保证隔离性。

    一个行记录数据有多个版本对快照数据,这些快照数据在undo log中。

    如果一个事务读取的行正在做DELELE或者UPDATE操作,读取操作不会等行上的锁释放,而是读取该行的快照版本。
    但是有一点说明一下,在事务隔离级别为读已提交(Read Commited)时,一个事务能够读到另一个事务已经提交的数据,是不满足隔离性的。但是当事务隔离级别为可重复读(Repeateable Read)中,是满足隔离性的。

    展开全文
  • 关系型数据库mysql 事务四大特性一、首先我们先说一下什么是事务mysql中对数据进行增删改查的任何一次操作的过程都可以被认为是一次事务事务是一系列严密的操作,事务的结束有两种结果,当事务中的所有步骤...

    关系型数据库mysql 事务四大特性

    一、首先我们先说一下什么是事务

    在mysql中对数据进行增删改查中的任何一次操作的过程都可以被认为是一次事务,事务是一系列严密的操作,事务的结束有两种结果,当事务中的所有步骤全部成功执行时,事务则提交成功。如果其中一个步骤失败,将发生回滚操作,并撤消之前到事务开始时的所有操作。

    二、事务的ACID

    事务具有四个特称:原子性( Atomicity )、一致性( Consistency )、隔离性( Isolation )和持续性( Durability )。这四个特性简称为 ACID 特性。

    1.原子性:事务在数据库中是一个基本的工作单位,事务中包含的逻辑操作只有两种情况就是成功和失败。即全部都执行完毕和什么都不执行,不会出现对数据修改一半异常停止,此时会自动回滚到事务发生前的状态。

    2.一致性:事务执行完毕时一个事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。举例说明:例如小王转账给小李5000元,在小王账户减少5000元的同时小李账户必须增加5000元,反之亦然。

    3.隔离性:一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据,对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。

    就是会达到这样一种效果:例如有两个并发的事务T1和T2,在事务T1看来,T2要么在T1开始之前就已经结束,要么在T1结束之后才开始,这样每个事务都感觉不到有其他事务在并发地执行。

    4.持久性:一个事务一旦被提交,在数据库种的改变就是永久的,即使系统崩溃重新启动数据库数据也不会发生改变

    展开全文
  • 目录1、事务概念2、事务使用3、事务四大特征(ACID)3.1 原子性(atomicity)3.2 一致性(Consistency)3.3 隔离性(Isolation)3.3.1 read uncommitted(读未提交的);3.3.2 read committed(读已提交的);3.3.3 ...
  • 事务四大特性3. 事务的使用4. 小结 事务 学习目标 能够知道事务四大特性 1. 事务的介绍 事务就是用户定义的一系列执行SQL语句的操作, 这些操作要么完全地执行,要么完全地都不执行, 它是一不可分割的工作...
  • MySQL事务四特性

    2022-01-18 19:48:19
    首先,我们常用的mysql存储引擎是,myisam和innodb两种引擎,想要使用事务就要用innodb引擎,事务一共有种包括(原子性(atomicity),一致性(consistency),隔离性(isolation),持久性(durability))简称acid!
  • MySQL事务四大特性

    2021-09-19 23:18:35
    请简述事务四大特性分别是什么?这很可能是面试题 原子性一个事务必须被视为一不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一...
  • 事务有以下四个标准属性的缩写ACID,通常被称为: 原子性: 确保工作单元内的所有操作都成功完成,否则事务将被中止在故障点,和以前的操作将回滚到以前的状态。 一致性: 确保数据库正确地改变状态后,成功提交的...
  • mysql事务四大特性

    2020-12-11 19:50:01
    事务在执行过程发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。 一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须
  • MySQL事务四大特性和隔离级别

    千次阅读 2022-03-30 15:19:54
    一、事务四大特性(ACID) 1、原子性(Atomicity) 原子性是指事务包含的一系列操作要么全部成功,要么全部回滚,不存在部分成功或者部分回滚,是一不可分割的操作整体。 2、一致性(Consistency) 一致性是可以理解为...
  • mysql事务四大特性

    2021-01-19 12:58:12
    本篇讲诉数据库中事务四大特性(ACID)和简单操作⑴ 原子性(Atomicity)原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要...
  • Mysql事务四个特性

    2020-11-08 23:43:12
    事务四个特性(ACID) ** 1.原子性 一个事务的多条sql,事务提交后,要么都成功,要么都失败 2.一致性 加入a和b各有500元,a转账给b200元,事务结束够则a有700元,b只剩300元,数据要一致 3.持久性 事务提交后,...
  • 最详细最细节的数据库事务(四大特性)(隔离级别)
  • 本文将首先介绍MySQL事务相关的基础概念,然后介绍事务的ACID特性,并分析其实现原理。MySQL博大精深,文章疏漏之处在所难免,欢迎批评指正。事务(Transaction)是访问和更新数据库的程序执行单元;事务可能包含...
  • 一篇文章掌握MySQL事务四大特性

    千次阅读 2020-09-22 08:50:12
    一、事务四个特性 二、实现方式 2.1 原子性 事务的原子性是通过undo log日志进行实现的。当事务需要回滚时,InnoDB引擎就会调用undo log进行SQL语句的撤销,实现数据的回滚。 undo log是InnoDB引擎提供的日志。当...
  • MySql中事务四大特征 1.原子性(atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响. 2.一致性...
  • Mysql数据库事务四大特性事务状态、事务使用、事务隔离级别前言一、事务是什么?二、事务四大特性ACID1.原子性2.一致性3.隔离性4.持久性二、事务的状态1.活动的2.部分提交的3.失败的4.中止的5.提交的三、事务的...
  • MySQL 事务具有四个特性:原子性、一致性、隔离性、持久性,这四个特性简称 ACID 特性一、原子性(Atomicity ):一个事务是一个不可再分割的整体,要么全部成功,要么全部失败事务在数据库就是一个基本的工作单位...
  • 个人分类: mysql事务四大特性(ACID):1.原子性(atomicity):一事务必须视为一不可分割的最小工作单元,整个事务的所有操作要么全部提交成功,要么全部失败回滚,对于一事务来说,不可能只执行其中的一...
  • MySQL事务四大特性及其实现方式

    千次阅读 多人点赞 2020-09-08 12:04:47
    MySQL事务四大特性及其实现方式 (一)简述 事务是MySQL区别于NoSQL的重要特征,是保证关系型数据库数据一致性的关键技术。事务可看作是对数据库操作的基本执行单元,可能包含一或者多SQL语句。这些语句在执行...
  • mysql——事务

    2020-12-14 13:20:32
    文章目录mysql——事务四大特性概念使用事务四大隔离级别版本链ReadView读视图 mysql——事务 四大特性 原子性,一致性,隔离性,持久性简称ACID 以转账的例子解释ACID,A向B转1000元 原子性: A扣1000元,B加1000元...
  • 事务是一组操作的集合,它是一不可分割的工作单位,事务会把所有的操作作为一整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。
  • MySQL事务

    2021-01-19 21:59:43
    MySQL中,所有的DML操作在执行之后都会有一commit操作[隐式的] commit的意思就是用来提交事务. DTL,数据事务语言 事务的定义: 就是指一组相关的SQL操作,...事务四大特性(ACID): atomic,原子性,事务是不可再分割的
  • MySQL 事务特性

    2021-10-13 21:19:14
      MySQL 事务具有四大特性,分别是原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。 1、原子性(Atomicity)   原子性是指事务包含的所有操作要么全部成功,要么全部...
  • 事务的概念事务(Transaction)指的是一操作序列,该操作序列的多操作要么都做,要么都不做,是一不可分割的工作单位,是数据库环境的逻辑工作单位,由DBMS事务管理子系统负责事务的处理。目前常用的...
  • 事务可以看作是一次操作,可以有多事件,也可以有多事件。 原子型 原子型是指事务包含的所有操作,要么全部成功,要么全部失败回滚。因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对...
  • MySQL数据库事务四大特性以及事务的隔离级别

    万次阅读 多人点赞 2018-08-18 23:16:11
    一、事务四大特性(ACID) 1、原子性(Atomicity) 2、一致性(Consistency) 3、隔离性(Isolation) 4、持久性(Durability) 二、事务的隔离级别(默认事务级别为可重复读) MySQL数据库的事务隔离...
  • 浅析mysql中事务

    2020-12-14 12:44:44
    事务四大特性 一般来说,事务是必须满足4条件(ACID)::原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。 原子性:一个事务...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 85,522
精华内容 34,208
关键字:

mysql中事务的四个特性

mysql 订阅