00:00
各位同学大家好,接下来我为大家介绍red事物,一说起这个事物,但凡有数据库相关背景知识的同学应该都不陌生,那么好。以前我们在学MYSQL的时候,100%给大家介绍过什么是数据库的事物,而这又单独的罗列出一个东西叫write事物。那么请问一。传统的关系型数据库什么是事物?第二个我们现在所说的RA事物和我们的RDBMS啊,就是关系型数据库的事物,它有什么区别和不同?OK,那么带着这些问题,我们来开始我们相关的学习。第一个。先来复习一下什么是数据库的事物,然后咱们再介绍什么是red的事物,它们两者有什么区别。首先请同学们在对话框窗口。告诉杨哥,什么是数据库的事物,我们复习一下,我先暂停一下录屏,那么部分同学的基础呢,还是应该再继续保持和加强。第一个听过,知道脑子里面有,但是你嘴巴上说不出来,对不起,你面试的时候没有那么多机会,假设像这样的一个问题你答不出来,你连被问到MYSQL优化什么是索引这样的机会你都没有,因为一个问题你就已经没了。
01:25
好,我们给大家做一下简单的复习,另外说什么acid那个同学的话呢,是回答错误的,现在杨哥问你的是什么?是数据库的事物,你别一说事物就想起来acid,那是数据库事物的四大特性是吧?原子一致、隔离、持久性等等。我现在问你的是什么是事物,那么说人话。那么也就是在一次跟数据库的连接会话当中,所有执行的SQL要么一起成功,要么一起失败,这个就是我们传统的数据库的事物相关的概念啊。
02:04
最经典的我们生活中的案例是不是就是银行转账的操作呀?比如说张三从建设银行要把100块钱转给李四的中国工商银行,那么请问在这次会话操作过程当中,是不是应该有两条update,更新银行账号的circleql,那么一条update是money等于money减100,第二条C是不是应该money等于money加100,你这边减了,我这边就要加两条ciq,是不是要一起执行,要么同时成功,要么同时失败,这就是数据库的事物呀,OK,否则的话。弟兄们都晓得。一旦这个暂时不相符,那么银行系统是不是出故障了?你见过哪一个刷卡,这个钱是越刷越多的吗?你见过哪哪一个抽烟,这个烟是越抽越长的吗?不可能吧,对不对?所以呢,数据库的事物非常的重要,好。第二个问题,那么既然已经有是大家业内公认的数据库的事物这样的特性了,为什么还要单独来拎出来叫事物呢?那么第一个它是什么?第二个什么样的背景发生的?第三一个它跟我们的传统关系数据库事物有哪些不一样的特性?好那么带着这些问题我们呢,来进行我们的学习,首先。
03:20
官网说话理论知识来自于哪?理论实操小总结,杨哥三板斧第一个。在这个网址换了啊,以前是在manage,现在是叫using,这有个transactions事物首先开篇名义how transactions work in RA,也即RA是支持事物的,有自己的一套事务体系,类似于传统的数据库,事物稍微有些不一样。那么接下来好。事物是什么?是否支持ready,我们在里面都做了概述,那接下来我们来说一下,先看一下解释,然后咱们再说原因,它为什么会有这个特性呢?
04:01
他说是务允许这样的一种执行是什么情况呢?A group of commands OK,是一组命令,Ina signal step,单步操作,也就就说你一次单步操作,那干嘛是要执行几个a group of,那么是不是一组命令啊?那么他们呢?达到这样的目的是为什么?第二个如何保证这样的?操作能够成功呢?他告诉你,他们呢是需要创建与之相关联的命令,是需要Mar ex e card和watch等等。那么所以说我们会明白由这些命令可以来开启处理red的事物。那接下来的问题是,他为什么要有这样的一种概念。发生呢,因为人家会问你,你说一下什么是事故,他为什么要有事故。你不要是学一些操作,敲几个命令,这个命令敲对了,然后你认为学通了没有任何意义,面试工作中不会有人问你命令这样的基本操作,在此第二次强调,请跟杨哥学技术,而不是来学一些操作。好,下面来同学们,我们有这样一种需求,弟兄们,Set ke1V1get ke1h set user001id11c name或者是u name,那么假设叫李四,请问几条命令三条好,现在我该买三条。
05:33
或者说我们跟我们的red是执行了三次交互的操作,每一次命令都是一个原子性的。下面我的问题是我需要有可能。三条命令,打出一套组合拳,A group of command,一组命令,我要求在我执行的时候。不希望有人加三,不希望有人来额外的更改,我希望把它放在一个事物当中来执行,那么这个时候最经典的啊,比如说我们再来K一位一,这是一一次,好,现在K1,我再想设置一次它的过期时间expi,假设30秒,那么同学们一看这两条命令都明白跟服务器发生了两次交货,一次交货是设置了K1的值V1,第二次交货是设置了K1的过期时间30秒,那么请问中间。
06:28
他们两个。是原子性操作吗?中间会不会有人其他的人来干破坏加三,比如说我现在有个CLIENT2,他也要去操作K1,这个情况下是完全存在,并且一定会出现的,那么所以说结合这种业务,我希望这个命令。多条命令能够合在一块儿,成为一个不可分割、具备原子性、不被干扰打断、统一执行的一套批处理命令。那么这种特性。所唤醒的就是我们red事物的要求,OK那么简单的一句话,回到我们的传统的关系数据库,大家都见过begin,然后是commit,或者是roll back来保证我们的什么。
07:13
传统的数据库事物,那比方说这是有个circleq一样,这有个CIRCLEQ2等等等等,那么样,左边这块是我们的MY或者传统的数据库事物,那么这边red的事物呢,这也就是由来了,我为了满足啊,最经典就是设置一个值加过去时间,我想把它合二为一,不要被人别人打断加塞分割,那么这个时候同学们,我们回到官网。就这些命令的来由就是可以保证我们刚才这样的一种诉求和机制,那么来MYSQL开启,叫begin开启Mar。OK,那么这个时候执行,那么在这个里面,也就是我们red的一大堆命令,OK,那么所以说这个时候就是我们知道了red它为什么要有15种特性,以及为什么会出现这些命令,这些命令就是保证开启使用red的事物特性。好了,那么回到这儿,我们可以。
08:13
给事物事物做一个定义,一可以一次性的执行什么?多个命令本质是一组命令的集合,一个事物中所有命令都会被序列化,挨个执行。按顺序的串行化执行,而不会被其他命令插入,不许加塞,进一步的变相的保证了所有命令的原子性。所以它的问题。原因能干嘛,就是在一个注意这叫什么队列,哎,为什么会是队列呢?待会我们会看一次性的顺序的排他性的执行一列操作,那么这个就是我们red的事物,那它和传统的关系数据库的事物来做个简单的对比啊第一个。
09:01
它有单独的隔离操作啊,Ready事物仅仅是保证事务里面的操作会被连续的占用执行,那比如说set expire过期时间本身是两个单独的。各自独立的命令,但现在我要请你把它合二为一,能够一次性批处理,集合起来,集中的执行。所以这个每个单独的命令,纯粹的它那是red单线程架构,那么在执行完事务内所有指令前是不可能。再去同时执行其他客户端请求的,OK,这是第一个,第二个事物没有什么叫隔离级别的概念,也不会有什么单独不可重复读换读这些乱七八糟的东东,它呢很简单,就是事物提交前任何指令都不会被实际的执行,为什么?诶在放在什么一个地方队列里面。排队过去,哎,这批次给你执行,也就不存在事物内的查询,要看到事物名的更新,事物外的查询不能看到类似于这样的单独不可重复读换读的问题。第三一个。
10:05
事物没有原子性。事物是部保证原子性的,或者变相的来说,它是分支持原子性。后面我们会在代码案例里给大家说明,就是说第一种有可能某个命令失败了。分两种情况,要么一起失败,要么一起成功,这跟原来的数据库事务是一样的,但是red呢,还支持第二种,就是什么冤有头债有主,成功的成功执行,错误的错误留下,哎,就是不搞连坐,所以ready也就不保证所有指令同时成功或同时失败。只有决定是否开始执行全部指令的能力,没有执行到一半进行回滚的能力。错就是错,对就是对。red没有什么回滚这种说法,那么最后排他性,Red会保证一个事的命令干嘛串行化的冰糖葫芦串一样的依次执行,而不会被其他命令。加三插入,OK,好,那么各位亲,这个就是我们对red事物和传统数据库事物的一个简单的介绍和对比,接下来案例说话。
我来说两句