文章目录
前言
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、数据结构等其他部分的面试内容均有涉及,因为文章篇幅,就不全部在这里阐述了。
作为一名程序员,阶段性的学习是必不可少的,而且需要保持一定的持续性,这次在这个阶段内,我对一些重点的知识点进行了系统的复习,一方面巩固了自己的基础,另一方面也提升了自己的知识广度和深度。
的面试内容均有涉及,因为文章篇幅,就不全部在这里阐述了。
作为一名程序员,阶段性的学习是必不可少的,而且需要保持一定的持续性,这次在这个阶段内,我对一些重点的知识点进行了系统的复习,一方面巩固了自己的基础,另一方面也提升了自己的知识广度和深度。