00:00
那行了,那咱们接下来再继续往下啊,我再来给大家解释一下,解释一下啊。解释一下我们这个事物,它的一个一个一个原理是怎样的啊。嗯。嗯。就是说实际上是这样的啊,假设啊,假设一个善需要先执行什么一条insert,再执行一条什么update。最后执行一条什么呀,Delay的就假设一个事啊,需要先执行他再执,最后执行这个这个事才算完成假设,那这个时候呢,他事物的这个机制是怎么控制这个怎么保证或者怎么控制这个数据的安全性呢。
01:10
哎,他是这样做的各位。他肯定会先执行什么呀,Insert语句吧,哎,执行一条insert语句啊,Insert某某某执行了。在执行这个的时候呢,之前我们可以怎么着啊,叫做开启什么事务机制啊,执行insert。执行之后呢,实际上啊,这个执行成功之后。啊,把这个执行。记录到哪儿?数据库的什么操作,历史当中。并不会什么。向。文件中保存一条数据。
02:06
不会啊,真正的什么修改硬盘上的什么数据,各位啊。是这样的,就开启事务机制执行insert语句,Insert这个执行成功之后,把这个执行的执行啊,把这个执行记录到数据库的操作历史当中。啊,并不会像文件中保存一条数据,不会真正的修改硬盘上的数据啊,开启事物,那接下来可能还会去执行什么呀,执行update语句吧,是吧?哎,那这个update点在这执行了,那这个同样也是一样的,这个执行也是记录一下什么历史操作,不会真正的什么修改硬盘上的数据,包括还有再执行一条什么呀,叫做delete语句。
03:00
啊,Delete某某某同样也是一样的啊,这个执行也是记录一下什么呀,历史操作就相当于记录到缓存里面。就进入进入到缓存当中,你可以这样去理解啊,不会真正的修改硬盘上的数据,那直到这里提交什么事务或者什么回滚事务啊,事物有一个提交和回滚的操作,对就这块呢,我们可以理解成是开启事务,这是开始,然后这边呢,是提交过回滚事务,就意味着事务着什么结束,当这个事物这一块。各位啊。开启事务。中间这块是执行一系列操作。最后怎么着啊,提交或者回滚事务结束。
04:02
那他这个动作呀,提交和回滚都会让15结束,各位啊。如果是提交的话。就会。把这个操作,这个操作,还有这个操作。给他持久化到哪儿?硬盘上,让硬盘上的数据彻底什么修改改变。然后所有的历时操作干什么,清空。以上所有所做的所有的历史操作,怎么着就清空掉了?这这叫这叫历史啊,历史。哎,你也可以理解成是一个什么呀,操作历史也可以成在缓存当中进行操作,开启事务,然后执行insert update delete,诶这个不会改硬盘,这个也不会改硬盘这个也不会改硬盘都是放到历史缓存当中,或者历史操作当中,那最后呢,诶,我们事务结束的时候呢,实际上是可以提交事务上的结束,也可以回滚事务上的结束,提交事务的意思就表示什么意思呢?就表示我们把之前的这个历史操作一并给他同步到什么硬盘文件当中。
05:15
硬盘文件当中,硬盘文件一旦改了之后,这个历史操作就全部干什么清空了,这个历史操作就没了,硬盘数据被改变了。还有一种情况就是说我们在执行的时候,Insert update delete,但到这呢,我们要回滚事误,这个回滚事务也会导致事物的什么结束,也会把我们历史操作记录干什么清空。只不过不和硬盘文件上的进行什么打交道。懂什么意思吗?就回滚事物是怎么做的?只是把历史操作干什么?清空和硬盘上的文件打交道吗?不打交道,提交事务呢?提交事务,提交事务就是改变硬盘文件当中的东西嘛,但历史记录也历史操作也会清空掉,记住啊,不管,不管你这个事物啊,最后是提交的还是回滚的,总之你只要提交或者是回滚,他历史肯定操作,历史操作全部就清空了,只不过就是提交事务的话呢,他会把这个操作当中的东西呢,一并同步到硬盘文件当中。
06:23
让硬盘文件上的数据发生真正的改变,而回滚事物呢?你就理解成历史记录,怎么着给它清空掉了,这个过程没有持久化,到硬盘了文件当中,文件没有改变,这样的话是不是就可以保证同时要么同时成功,要么同时什么呀?失败。啊,要么同时,要么同时失败。所以这个这个事物到底是什么呢。就这这个东西到底是啥呢,是不。事物其实我理解是这样,各位啊,事物就是。
07:02
多条DML语句捆绑在一起。至于这个DML语句到底是多少条,这个不一定,因为你现实生活当中的业务逻辑,有的可能很复杂,有的可能很简单,很简单可能两条语句就搞定,很复杂,可能20条语句才能搞定。总之我不管你是两条也好,或者20条也好,你这个这些DML必须捆绑在一块,要么你让他同时成功,要么你让同时失败,这样方可以保证你数据库当中数据是合法,合法的,安全的,有效的。你肯定不能这么干,你肯定不能因色去执行一下,咔嚓把文件当成数据彻底给它改掉,能这么做吗?不能。因为你这事没做完啊。你心啥急呀?你这会儿改一会儿,万一后边这个失败了,这个也失败了,那你这个把硬盘文件的数据改了,那数据最后肯定不行啊。
08:07
是吧,肯定是这样的,所以说这个第一次操作记录到缓存里边,第二次操作也记录到缓存当中,第三次操作也记录到缓存中,我们认为可以理解成这是一个历史操作,我们放到这个历史操作当中,然后接下来我们提交事物的时候,可以一次性的修改文件,可以做到一次性的修改文件。还村进宫。回滚事务那压根跟文件就怎么着没关系,跟这个文件就没关系了,这个文件没没关系,就只是把这个历史记录给清空掉,之前所有的操作给他清空掉就完事了啊。那么这里我想说的是提交事务呢?有一个叫commit,各位回滚事务叫robot。这是两个SQL语句啊。这时候就是你们之前所说的TCL?
09:05
咱们之前就早一直在说这个SQL语句分类啊,分什么这个什么什么什么DQL,什么DMLDDLDCLDCL是不是,那你说我们这些五五大类当中,DQL我们玩过了,对吧,DLL也接触过了,DDL,创建表删除表都会吧,诶然后呢,还有TCLR,还有DCLRDCLR其实就是说授权这个,撤销权限,权限这块啊,这个TCLR就是事物了,事物就两条语句,一个commit,一个robot完事,别的你就不用记,一个是提交,只要遇到这个就是提交,只要遇到这个就是回滚。这俩语句好记,好记啊,好记。当然如果你想搞得特别复杂一些事物,这块还可以设置什么呀,保存点。保存点。Con。
10:00
这个我们就不再演示了,各位啊,Save point什么意思呢,就是说你。做一个事的时候,你可能先执行什么insert。然后再执行什么delete。啊,然后再执行什么好,接下来我在这个位置。我保存点设置了一个保存点A1明白,然后接下来我继续往下做这个事儿,Delete吧,有没有可能,然后再往下有个insert能理解吧,好,接下来我在这执行一条语句叫什么。Roll back。后边直接跟一个A1。你懂什么意思吗?这个ae表示回滚到哪,回滚到这个地方。
11:01
你之前做增删改,增删改做了一系列之后呢,你在这做了个保存点,你要不做这个保存点,将来回滚的时候E一下就全回去了啊,你设置一个保存点的目的是啥呀?想让它回滚的时候滚的少一点是吧,滚到某一个地方吧,是不是?哎,就这意思啊。这个咱不需要。但是他确实有这个语法。我们一般情况下就是一个业务逻辑,三四条语句,三四条四五条的第面语句凑在一起,这个事就能做完,一般情况下我们这几条语句做完之后呢,我们来一个什么呀,统一的什么commit操作,Commit commit提交,Robot是回滚,各位啊,就这两个语句很简单很简单。所以这是一个事物,它底层的一个一个一个实现,算一个实现原理,各位啊,它的原理就是说他执行一个诶。
12:03
这个create语句他会这样做吗?会吗?不会啊,这个会在缓存里边留下操作历史记录吗?留下操作历史记录吗?不会的啊,因为这个我告诉你上来直接执行完直接改的就是谁文件,他压根跟那个缓存,跟那个历史记录就不挂钩。我上来我就先跟你说的是,只有三个语句才会进入事物的管辖范围之内,就是insert delete和update,只有这几个语句才会涉及到什么,它的操作都会放到哪啊?我刚才所说的就是缓存里边。提交的时候一下就把缓存里边数据干什么,和硬盘文件来一个同步,来个同步,回滚的时候说立这个缓存里边数据干什么,清掉缓存里边的数据给它清掉,就是这样。
13:04
别的语句没有。只有因尔里的阿贝。
我来说两句