00:01
各位同学大家好,刚才呢给大家说明了悲观所以及乐观所它里边的执行过程,那咱们下面呢,给各位来演示一下乐观所在我们的ready中到底该怎么去使用,给各位演示一下这个过程,那我们来看一下啊,在ready中的一个命令叫这个命令watch watch什么意思呢?它表示啊,在你执行这个market,就是事物之前,先执行watch去监视一个或者多个key,如果在事物之行之前这个K。被其他命所改动,那么事物就被打断了,就是咱说的6万锁的过程,你事物之间是单独隔离的,通过watch来监视一个K或者多个K,这是我们说的一个操作。那我下面呢,把这个给大家来演示一下,咱们来感受一下里面的过程,那怎么演示呢?比如现在啊,我这么来做,现在呢,我再打开另外一个就是连接终端,咱用两个过程模拟这个操作,那第二个终端中我也连上我们这个就是red。
01:06
我给它连一下啊,Red杠下来大家看啊,这个我先来一个clear,各位看到目前两个终端是不是都连上了,然后连上之后呢,比如我首先先做一个操作,咱往里边先加一个数据,为了它有值,我们来一个set,比如这个key,这课件中起一个名字了,我就叫这个balance。这个名字。DA an CE,然后这个值呢,比如我叫这个100啊,咱往里边先加入这个数据啊,包括咱可以看一下里边应该是有这个值啊,这个balance,包括这里边。K星号有这个balance,然后加上之后呢,咱往下做,下面做什么呢?咱就来watch一下,这个K就是balance做一个监视,在事务执行之前,如果被改动,那事物就被打断,注意我在两个连接客户端中都去监视一下,这个叫watch。
02:03
然后加上为KK,就叫做balance。这是第一个监视,然后在这个里边我也给他做一个监视,Watch balance。大家看目前两个里边是不是都监视这个key啊,然后监视key之后,下面呢,咱做个操作,在两个里边都去开启事务,然后做操作,那比如说现在我给他开启一下啊,左边这个我加一个叫马。Ul Mar。然后在里边我也加上一个八,然后加上之后,比如现在啊,我在就是这个中单中呢,把这个be的值做个操作,这个操作呢,比如咱做个加或者做个减都可以,我就来一个这么一个加操作,音可瑞BY。这个记得吧,就是给他加上某个值,设置它加的那个值,比如来一个balance。这个值呢,比如我交这个十,现在在里边我们做了一个就是加时的操作啊,这是一个你看放到我们的特归类中,然后在右边里边呢,我也做过操作,因可瑞拜。
03:13
然后这个叫balance。比如这个我给它加上一个20,现在也放到队列中,大家看目前两个里边是不是都对这个值加了十操作,然后交完十之后,最终它是不是要做个执行啊,各位注意啊,这里边有个特点,比如现在呢,我把这个加时操作先做个执行EXE,现在你看啊,这个是变成这个110了,它就加持了,然后在这里边呢,再做一个加持操作,你看。这反什么,是不是NL,类似于Java中那个空,就是这个操作就没有成为这个加二次操作,就是它的执行就没有进行下去,因为这里边有这个乐观锁过程,什么过程呢?就是现在你看啊,我这两个终端都得到这个balance这个数据,对它做watch,而我这里边,比如我左边这个给它做加十,右边也加20,那我左边先进行执行,而他执行之后呢,把这个balance的版本号做了修改,比如他默认1.0,然后我改完之后版本号变成1.1,而右边这个在最终执行的时候判断一下版本号,发现1.0跟1.1是不一样的,所以最终它就不能在G里操作,这就是乐观锁在whether中一个具体使用,咱通过watch做这么一个监视,监视一个或者多个K啊,你可以写多个,我这里以一个为例,如果在事物执行之前,这个K。
04:43
被其他命所改动,那事物就被打断了,这是咱们说一过程,另外还有一个叫anwa啊,就是取消对命的这个K的这个监视,这各位给他知道,所以咱们这个叫演示完成了关于read中这个事务操作,然后read事务操作之后,大家看这里边啊,我这里边总结了一个针对ready事物中的三个特性啊,不是咱说那个ID,因ready中不支持ID,那是MYSO中那个特性,Ready中特性是什么,大家看一下啊,第一个特性。
05:16
单独的隔离操作咱都演示过,就你失误所有命令都会序列化,按照顺序执行,你误在经营过程中不会被其他客户端发送来的命令所打断,这是它的第一个特性,单独的隔离操作,然后第二个它没有隔离级别概念,这个不知道各位是否知道啊。在我们的买色数据股中,或者说惯性数据股中有隔离级别概念,就是一个事物和另一个事物之间互相读,互相这个操作,因为这个东西是比较复杂的,但是在writer中它没有这个概念,所以它这事物是比较简单的,它没有这个互相这概念,因为他们都是单独隔离操作啊,这是第二个没有隔离地的概念,然后第三个它不保证原子性,就是事物中如果一条命令执行失败,那他气候的命令能会执行没有回滚,就是咱们刚才演示的,如果说你在组队阶段有一个失败了,后面都不会成功,但是如果你组队中没有失败,后面执行中有哪个失败就失败,然后其他的正确的还可以正常执行,所以它不保证原子行,不像咱们那个买so中要么都成功,一个失败都失败,他跟买so中是不一样的。
06:27
所以这三个就是事物的三个特性,也就是说到这里为止呢,咱就把这个read终的事物给各位就说完了,最终总结一下啊,首先事物的三个特征咱说到了,单独的隔离性,没有隔离级别,不保证原子性,另外事物的操作用这个Mar e cutte和cut定制性,包括它的两种错误情况演示咱都说到了,以及我们这事物中,它里边就是解决方案用乐观锁,包括非关锁,非观锁就是每次操作都上锁,别的操作不能进行,等我释放之后才可以进行,而乐观所通过版本号做控制,我们在最终改数据之前先判断版本号是否一致,就是你当前操作数据版本号跟数据库中数据的版本号是否一样,如果一样的话进行操作,如果不一样就不能操作,而乐观所多适用于这个。
07:27
读的这种就是多读的这种操作,可以提高你的吞吐量。所以这就是关于中的这个事物的这块操作,咱们就也是完成了。
我来说两句