> 文档中心 > 【MySQL入门实战2】-事务的ACID

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


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

文章目录

  • 前言
    • 📣 1.ACID概述
    • 📣 2.原子性(atomicity)
    • 📣 3.一致性(Consistency)
    • 📣 4.隔离性(Isolation)
    • 📣 4.持久性(Durability)
    • 📣 总结
    • ✨ 每日一练

前言

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


📣 1.ACID概述

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

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

📣 2.原子性(atomicity)

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

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

如上图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
【MySQL入门实战2】-事务的ACID
如上图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, 已被提交的事务对数据库的修改应该永久保存在数据库中。

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

在这里插入图片描述

影搜视频