【MySQL入门实战2】-事务的ACID_事务的acid下列哪个是错的,被面试官问的Java问题难倒了

文章目录

前言

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)

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

最后

关于面试刷题也是有方法可言的,建议最好是按照专题来进行,然后由基础到高级,由浅入深来,效果会更好。当然,这些内容我也全部整理在一份pdf文档内,分成了以下几大专题:

  • Java基础部分

  • 算法与编程

  • 数据库部分

  • 流行的框架与新技术(Spring+SpringCloud+SpringCloudAlibaba)

这份面试文档当然不止这些内容,实际上像JVM、设计模式、ZK、MQ、数据结构等其他部分的面试内容均有涉及,因为文章篇幅,就不全部在这里阐述了。

作为一名程序员,阶段性的学习是必不可少的,而且需要保持一定的持续性,这次在这个阶段内,我对一些重点的知识点进行了系统的复习,一方面巩固了自己的基础,另一方面也提升了自己的知识广度和深度。
的面试内容均有涉及,因为文章篇幅,就不全部在这里阐述了。

作为一名程序员,阶段性的学习是必不可少的,而且需要保持一定的持续性,这次在这个阶段内,我对一些重点的知识点进行了系统的复习,一方面巩固了自己的基础,另一方面也提升了自己的知识广度和深度。

  • 18
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值