00:00
下午的话呢,咱们要介绍的这个内容呢,第一个呢,叫做TCL语言,TCL的话呢,呃,可能就想到了一个电子产品对吧?啊,那实际上它代表的是事物控制语言,那么我们把它这个全称呢,给大家去写一下哈,呃,这个叫做transaction transaction呢代表的是事物,C的话代表的是呃,这个是CTR控制,那么L代表的是language,那么我们把它翻译成我们的中文呢,叫做数据控制语言,呃,事物控制语言啊,事物控制语言好吧,那么这个里边呢,就会提到了一个概念,这个概念的话叫做事物啊,那咱们就一起来说一下,说什么叫做事物,其实呢,事物的话,它的意思是指啊,那么是指我们这个,呃,一个或者说一组或者一组这个词语句啊,S语句,那么组成这样的一个执行单元,那么组成这样的一个执行单元。
01:00
啊,我们把它称为事物,那么这个执行单元呢?哎,这个执行单元要全部执行,要么全部不执行,哎,这是我们事物的一个特点,那光这样说的话,大家肯定是不明白的,说说那他为什么要么全部执行,要么全部不执行的,因为我们知道,那么对于一组词汇语句的话,那就有可能这个词Q语句里面有多条,那么有的可能能执行成功,有的是不是可能执行失败啊啊那么在什么情况下,我们需要他们全部执行或者全部失败呢?比如说我们举一个最经典的案例哈,那就是转账的例子,那假如说呢,我有这样的一个账户表,这个账户表里边涉及到了两个账户,假如说有一个叫张三丰,那张三丰的话呢,有1000块钱,哎,那么假如说再有一个账户,呃,谁嘞,比方说郭湘,呃,大家知道郭湘是谁吧,知道他俩的关系吧,不知道是吗?嗯。
02:00
什么关系呢?没关系哈,这个这个张三峰应该是喜欢郭襄的,嗯,对,喜欢郭襄不知道呀,呃,张三丰应该是等了郭襄,呃,多少年呢?这个应该是说他100岁了还在小着郭襄是吧?嗯,应该是等了大概得有快100年了,因为他是从五岁就认识了郭襄啊对啊,应该是有这样的一段历史啊,那行了,这个不重要,重要的是呢,他俩要转账了,那张三丰呢,打算跟郭香转账,那么转账的话呢,我们知道这个里边涉及到的语句就应该有update我们的这个表啊,那么S我们张三丰的这个余额啊,那么把它的余额可能会更改为是不是500啊,对不对,然后where,我们的name是不是等于张三丰是这样的一个意思吧?啊,那么这是一个尾代码哈,那行了,那么还有一条S后语句呢,就是要修改是不是郭襄的这个余额呀,哎,郭襄的余额,那么我们这儿呢,就改一下这个呢。
03:00
叫做郭襄的余额为是不是应该是一千五呀,哎,更改为1500,然后外内呢,等于郭襄好了,那么假如说呢,我们有这样的一个事情,那么这个事情呢,我们要做的话,需要两条词口语句,我们组成一个执行单元,那么假如说我执行完第一条SQL语句,中间出现了意外,哎,那这个有可能说我的数据库被挂掉了,那出现了意外,这样的话就会导致上面的成功了,下面的是不是失败了呀,这肯定不是我们想看到的,因为这样的话就会导致张三丰的钱是变成了500呀,而郭香的钱他依然还是多少1000,他并没有转账成功,那么这样是不是就不对了呀,那说明我们的数据就不可靠了啊,那所以说事物呢,它就是用于解决这种现象的啊,那么事物呢?它主要就用在这种场合了,那么我们希望呢,这多条词口语句组成一个独立的执行单元,这个执行单元我们应该能够保证要。
04:00
好,全部成功,要么全部失败,哎,这就是事物的一个意思啊,事物的一个意思,好,那么接下来呢,我们可以看一下对应的这个PPT里边的解释啊,不是这个,那我们打开哈,啊,看一下这个关于事物它的这个深刻的这样的一个理解,诶打开看一下啊。好,那看一下这事物呢,它就是有单独单元的一个或多个词口L语句组成,那么在这个单元里面每一条SQL语句呢,都是相互依赖的,也就是它们之间是不是有关系啊,那么这整个的这一个执行单元呢,它作为一个不可分割的整体,那么我们希望这个里边的这词后语句啊,要么的话呢,全部执行,要么全部失败,这个地方也写到了,如果说某一条出现了错误,我们希望整个单元将干嘛呢?回滚啊,将回滚回到最初的状态,说到这个回滚呢,有的同学可能不太理解哈,那什么叫做回滚呀?那你比如说我举个例子,平时咱们不是会偶尔会安装一些软件嘛,安装的时候有可能他需要安装有三步吧,那么可能你安装在123第二步的时候,你会发现哈,有一些错误啊或者等等啊,这个时候它可能会提示你要么继续是不是,要么就。
05:19
干嘛呢?是不是撤销啊,或者怎么样,它可能不叫回滚,对不对?呃,要么就撤销,假如说你点了撤销,我不知道大家有没有这样的一个体现啊,就是你会发现有的软件的安装它是这样的,假如说你点了撤销,你会看看见一个进度条,咔咔咔,是不是又回到了对头啊,诶,这个就叫回滚,回滚意思是说把刚才所有做的操作是不是重新撤销啊,哎,回到最初的状态,哎,有没有遇到过这种场景,应该有啊,应该有啊,不是所有的软件都能够明确的看到这种进度条的,但有的软件安装的确是这样,哎,这个就叫所谓的回滚,那当然如果说单元中所有的搜QL语句全部执行成功,那么OK,那就全部执行呗,对不对,顺利成功,哎,这是事物的一个含义,那说到事物的话呢,咱们可以去顺道了解一下跟事物相关的一个概念,叫做存储引情,这个存储引情在最初的时候,我貌似呢,也跟大家去提过,对不对,呃,咱们说了哈,我们这个。
06:19
不同的数据库服务器,那它默认的存储引擎是不是不一样呀,对不对,但是咱们可能不太知道存储引擎它本身的意思哈,那么在这呢,咱们去了解一下,后期的话,咱们会有专门的章节来去介绍群储引擎啊,那我们先看它本身的一个意思,群储引情呢,它是指在我们班思构中数据的不同的这种存储技术,我们把它称为存储引擎,我们有的资料书上也把存储引擎称为,就叫做表类型,一说到表类型你也要知道,它就是只存储阴性,其实说白了呢,它的意思就是说我们MYSQ中的数据到底是用呃什么方式来存的,这个是由谁来决定的呀,存储引擎来决定的啊,它这个意思,那么我们如何来查看我们班搜Q中支持的存储引擎呢?通过一个命令叫做show engines,来我们看一下吧,那这样来写的哈,Show engines哈,这样去写,然后现在我们去直行,你会发现。
07:19
咱们MY搜Q中支持的存储引擎,哎,它在这个地方都会罗列出来,其中里边有我们见过的叫做啥阴柔地利这个这个地方是不是也写到了,是不是就是当前数据库服务器默认的呀?哎,默认的存储引擎啊,还有一个比较用的较多的叫做MY,按这个是在5.5版本之前默认的存储引擎啊,5.5版本之前都是使用的它的,还有像memory啊,这种存储引擎用的也挺多的啊,这三个是属于比较主流的啊,主流的了解一下就行了啊好,然后再往下看,那么我们这个跟事物有什么关系呢?看一下下面,那么一定要注意了,不是所有的存储引擎都支持事物啊,那么像谁呢?像咱们现在5.5版本默认的存储引擎音录DB,它是支持事物的,换句话说,你换成像MYM,还有像memory,它支持事物呢,它并不支持啊,就是因为咱们音。
08:19
DB这个引擎是支持事的,所以咱们今天才会去讲这个东西,要不也没法讲,对不对啊,他是这个意思啊,先了解一下啊,然后回头会给大家去细说它们三个的一个区别啊,三个的一个区别啊,好,行吧,这是关于它,那就不多说了,接下来咱们就去看一下,对于一个事物来讲,除了刚才提到的要么全部执行,要么全部失败的特点,它还应该具备哪些特点呢?那么这个地方呢,就是一道常见的面试题了,也就是事物它所具备的属性或者说特点,那我们可以统称为叫做a cid,很显然这是四个四个特点啊,那这四个特点的话,是不是缩写为ACD啊啊对,分别什么意思呢?好,第一个叫做原子性原子,性原子的话,我们再去学是化学对吧,是什么物理?呃,上是不是做过这个原子是不可再分割的,最小单位是这样说的。
09:19
啊,呃,是什么?上面说的化学是吧?嗯,反正化学物理上都有,其实但是是先在化学中见过的,还是先在物理中见过就忘掉的,对吧?但是后来好像又说原子也可以再分对吧?呃,但是对于当时咱们幼小的心灵来讲啊,就是老师告诉我们原子是不可再分的,的确是说过是不是啊,而且在那个认知的层面上,我们就可以认为最小的直径单位是不是原子啊,所以说我们在这个地方呢,就用原子星来去表示一个事情,什么事情呢,代表说我这一个事物呢,它是一个不可再分的了。啊,认为这个这个事物的话,这里边的语句呢,不能再拆了,要么全部执行,也就是全部发生,要么都不发生,是不是就是对比于我刚才讲的那个例子啊,意思是说这多条搜狗语句组成一个工作单位,我们不能再拆分,要么同时执行,要么同时失败,举一个生活中案例哈,比如说你去找工作的时候,人家说哎,你不错哈,那个就要你了,明天来上班,那你说不行,我和我女朋友是捆绑式的就业,就我俩不可再分,我俩是一整体,你要不我俩都要,要么我俩都都那个什么都都都不去能听懂吧,那所以说呃,这个意思的话,就跟我们这个原子形是一样的事物里面的多条SQL语句就认为是捆绑式的执行,是不是要么都成功,要么都失败啊,哎,好,这是第一点啊,也是最最重要的一点,好再看一下第二点,第二点的话叫做一致性,呃,你看他的这个手。
10:59
字母是不是就是这个C呀啊一致性,那一致性是说我这个通过这个事物,我们会使数据库从一个状态切换到另外一个一致性的状态,什么意思嘞?你比如说还是拿刚才的这个,呃,应该看这啊刚才的这个案例来去说,我们在做转账之前,张三丰的钱是1000,郭湘的钱是1000,他们两个的余额之和是多少钱,2000,好,那么经过我这个事物执行这个事物是不是有两条搜狗语句啊,那么我希望执行完事之后,他们两个的余额之和还是2000,听懂意思吧,这个叫做说你这个事务执行完之后,我的这个数据依然还是一个一致状态啊,还是准确可靠的啊,这是第二点,然后第三点,第三点呢叫做隔离性isolation啊,那么首字母是这个I啊,对应的是这个I,那它的意思是说我一个事物的执行啊。那么英。
11:59
干式来讲,不受其他事物的干扰,因为是不是在实际的这个开发中,就有可能多个事物并发的去操作同一个数据库的数据啊,哎,有可能干这样的事情,那么正常来讲的话,是不是应该我们多个事物之间是不是互相隔离开来,互不干扰啊,但是他说的这个状态的话呢,也得需要我们通过下面要介绍的隔离级别来控制啊,也就是很多时候是达不到隔离性的。
12:26
啊,等会我们就去演示这一点啊,就正常来讲需要,呃,正常来讲应该是这样的啊,应该是隔离开来,但是那你得看你的隔离级别啊,得看这个啊行,这是第三点,第四点持久性,哎,这个得跟大家去说一下哈,什么叫做持久性,持久性是指我们一个事物哈,只要是一个事物,那么你一旦提交了,那么这就是永久性的改变,经常有同学问说老师这个我做了个删除,其实一条删除它就是一个事物。说我删除完事之后呢,老师,我这个我又不想删了,我还能不能再撤销回来对不对,嗯,没有办法,你这个事物一旦提交了,它就是一个永久的,永久的对数据库的一个改变,除非是你在加新的事物,是不是去影响它呀,比如说你在插入对不对啊,能听懂吧,这个就是真正的去改变数据库的数据的啊,事物一待提交,它就是永久性的,好了,这是关于事物的ACD4大特性,这个是一道经典的面试题啊,所以说这个要求我们去掌握的,我写到这来哈,哎,这就是事物的特性啊,来咱们总结一下,叫做acdd,记住了吧,这个酸,嗯,好吧,然后这个的话有原子性,原子性的意思,代表的是一个事物不可再分割了啊,这是最小单位,就像我说的捆绑式执行。
13:59
啊,要么都执行,要么都不执行啊好,另外还有一个叫做一致性啊,一个事物啊,可以使一个事物执行哈,啊会使会使使用的时哈,会使我们的数据从一个一致状态,一致状态哈,哎,切换到切换到我们另外一个一致状态,总之还是一致的对吧?然后是隔离性,隔离性是指我们一个事物的执行不受其他事物的干扰,但是我说了哈,这个你得看你设置的什么隔离级别了啊,有的隔离级别它是瘦的,能听懂吧啊最后的话呢,是持久性啊,那么一个事物一旦提交啊,则会永久的,是不是改变我们数据库的数据啊呃,改变数据库。
14:59
的数据啊,除非说哎,你说我删了,我又不想删了,没办法撤销,除非你再重新插入能听懂吧,啊那就是。
我来说两句