• 【MySQL入门实战2】-事务的ACID


    📢📢📢📣📣📣
    哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA工作经验
    一位上进心十足的【大数据领域博主】!😜😜😜
    中国DBA联盟(ACDU)成员,目前从事DBA及程序编程
    擅长主流数据Oracle、MySQL、PG 运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
    ✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞
    ❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

    前言

    MySQL入门实战将持续推出MySQL入门的技能和相关运维经验给大家

    📣 1.ACID概述

    关系型数据库需要遵循ACID规则,ACID是指数据库管理系统(DBMS)在写入或更新资料的过程中,为保证事务(transaction)是正确可靠的,所必须具备的四个特性:原子性(atomicity或称不可分割性)、一致性(consistency)、隔离性(isolation又称独立性)、持久性(durability)。

    在这里插入图片描述

    📣 2.原子性(atomicity)

    一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被恢复(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样,事务的所有操作要么全部成功,要么全部回滚。

    图1-1
    在这里插入图片描述

    如上图1-1所示,总共1000元钱,A和B的发生转账交易,这个过程包含两个步骤
    A:850 - 150 = 700,A原来有850元,最终余额为:700元
    B:150 + 150 = 300,B原来有150元,最终余额为:300元
    原子性表示,这两个步骤一起成功,或者一起失败,不能只发生其中一个动作

    📣 3.一致性(Consistency)

    在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的数据必须完全符合所有的预设规则,这包含数据的精确度、串联性以及后续数据库可以自发性地完成预定的工作,即事务前后数据的完整性必须保持一致。一致性表示事务完成后,如图1-1发生的转账交易,如果事务提交成功则A账户减金额,B账户则加对应的金额,数据库总体金额不变只是载体变了。如果事务出错则整体回滚,无论到了上面的哪个步骤A和B的数据都会回到事务开启前的状态保证数据的始终一致,符合逻辑运算。

    📣 4.隔离性(Isolation)

    隔离性是指,事务内部的操作与其他事务是隔离的,并发执行的各个事务之间不能互相干扰,隔离性追求的是并发情形下事务之间互不干扰。简单起见,我们主要考虑最简单的读操作和写操作,那么隔离性的探讨,主要可以分为两个方面:
    ✨ 一个事务写操作对另一个事务写操作的影响:锁机制保证隔离性
    ✨ 一个事务写操作对另一个事务读操作的影响:MVCC保证隔离性

    图1-2
    在这里插入图片描述
    如上图1-2所示,针对多个用户同时操作,主要是排除其他事务对本次事务的影响。

    📣 4.持久性(Durability)

    一个事务被提交之后。它对数据库中数据的改变是持久的,即使数据库发生故障也不应该对其有任何影响,事务结束后的数据不随着外界原因导致数据丢失。

    以图1-2所示的银行交易为例:
    操作前A:850,B:150
    操作后A:700,B:300
    如果在操作前(事务还没有提交)服务器宕机或者断电,那么重启数据库以后,数据状态应该为A:850,B:150
    如果在操作后(事务已经提交)服务器宕机或者断电,那么重启数据库以后,数据状态应该为A:700,B:300

    📣 总结

    事务(Transaction)是并发控制单位,是用户定义的一个操作序列,这些操作要么都做,要么都不做,是一个不可分割的工作单位。事务通常以BEGIN TRANSACTION开始,以COMMIT或ROLLBACK结束。事务中的所有操作要么全部执行,要么都不执行。如果事务没有原子性的保证,那么在发生系统 故障的情况下,数据库就有可能处于不一致状态。 因而,事务的原子性与一致性是密切相关的。

    ✨ 每日一练

    关于事务的四大特性(ACID),以下哪个说法是错误的?()
    A.原子性即atomicity,或称不可分割性,事务的所有操作要么全部成功,要么全部回滚。
    B.一致性即consistency,总是从一个一致性的状态转换到另一个一致性的状态.
    C.隔离性即isolation,多个事务并发执行时,一个事务的执行会应影响其他事务的执行。
    D.持久性即durability, 已被提交的事务对数据库的修改应该永久保存在数据库中。

    ❤️❤️❤️ 请在评论区留下你的答案,我会做出详细的解答。

    在这里插入图片描述

  • 相关阅读:
    使用设计模式基于easypoi优雅的设计通用excel导入功能
    这份阿里巴巴 Java 架构六大专题面试宝典值得你刷一刷
    i5 13600KF参数 酷睿i53600KF什么水平i5 13600KF核显相当于什么显卡
    玩机搞机---脱离电脑 用手机给手机刷机 解锁bl 获取root的方法教程
    Sermant在异地多活场景下的实践
    防止鱼叉式网络钓鱼的4个步骤
    MySQL下载步骤详解
    Flutter3.10版本发布,编程语言的重大更新
    【计算机网络】Servlet API重点知识汇总
    Java:单例模式探究
  • 原文地址:https://blog.csdn.net/weixin_41645135/article/details/128200795