今天讲一下被关锁,被关锁的作用是解决多线层篡改共享收据的问题,主要是讲数据库怎么实现被关锁,实现原理其实就是基于福尔阿伯代的查询。 被关锁的本质就是当一个县城修改数据的时候,其他县城不允许修改,也不允许读数据。我们直接来看射客, 我们开了两个这个窗口,模拟两个客户端,下面两个县城。我们在执行查询之前,要把这个提交事务模式从自动提交事务改成这个手动提交事务, 然后这个也是一样,就是把这个自动改为这个手动提交。接下来我们就是开始执行这个客户端一的这个福尔布勒的查询,可以看到这个查询结果是一,库存数量是一,然后我们再来执行客户端二的这个查询,也是福尔布勒的 查询,可以看到这个一直在旋转,为什么在旋转?为什么查不到数据?因为扣单二现在是在主塞获取锁,本质是因为这个扣单一他没有私房锁。现在我们继续执行扣单一的这个更新语句,把把这个库存数量减一执行更新,然后这里就执行更新, 那最终的话我们就是提交四五,提交四五之后我们就可以看到这个客户单二,这里就是数据已经查询出来了, 控制数量是零,也就是说当我们把这个扣单一这个事物提交完成之后,就现在就释放锁了,释放锁之后这个扣单二他就可以获取到锁,然后并且就是把这个数据然后就查查出来了, 他这个库存数量是是零。为什么是零?因为我们刚才扣单一已经就是库存减了,一一减一就等于零, 所以这里查出来是零,所以我们可以看到就是一个县城写的时候,其他县城到底能不能读呢?他是不能读了,就是 另外一个县城如果也是 fober 的查询,并且查的是同一条数据,就是同一个行锁,锁的是同一条记录的话, 他就是不能堵的。说白了这个被关锁的本质其实就是和交往大马里面的那个锁一样的, 其实就是读方法和写方法都加了锁。也就是说当一个县城我写数据的时候,其实我是已经获取了锁,然后另外个县城哪怕他是读,他都不能读,因为他现在是 获取不到,所,所以他连读都读不了。就是跟我们刚才讲的这个福尔伯利的就是查询是一模一样的,但是另外一个县城什么时候是可以读呢? 如果是如果另外一个现在是非,就是非 fold 代的查询,他就可以读,因为非 fold 代的语句他就不需要获取,所所以他是可以查询数据的,他可以读数据。我们也来执行社会演示一下, 我们来执行第一个,我们来执行客户端一的这个福尔布特的查询,查询结果是库存数量是零,然后我们来执行客户端二的这个查询。我们现在查询的话是不带这个福尔布特的语句,看能不能查到数据,可以看到这个第二个客户端就是客户端二,他 可以查询到数据,然后查询到这个控制数量也是零,所以我们这里就是写的就是,但是如果是非福尔布顿的查询,他就可以可以查询,可以读数据,所以一个说法就是能不能查到数据,关键在于有没有加这个福尔布顿的这个关键字, 如果加了福尔阿伯队的关键字,那么他就是要获取所,但是如果是另外一个县城,他目前还没有释放所,你就是一直在阻塞等待,然后如果是非福尔伯利的查询的话,他就 不需要获决所,那么他就可以直接读数据,可以查询数据。所以就是我们平时在工作当中,一般情况下是这样子的,就是一个县城获取所,其他县城就是就是只能主塞,默认就是主塞,然后除非就是走算一段时间之后,然后到了这个超时时间, 然后他就超时了。但是更常见的就是在工作实践当中,最佳实践是我们一般就是如果有一个现成他在更新数据,另外一个现成如果获取不到锁的话,会让这个现成立即失败,也就是让他抛出异常。抛出什么异常呢?就是 获取不到数了一场,然后下次就是再次再次获取数,一般实际当中就是这么处理的。 然后最后再总结一下这个时间原理,时间原理的话其实就是进入这个世界库的行所来实现的。好的,谢谢。
粉丝1719获赞2.8万

啊,二点二,二点二呢?我们从这个就不再说了,大家看啊,它相当于啥?你看啊,它是一个 lop 是吧?啊,推出一个条件,接下来呢?摁着 lop 那个问条件,它相当于我们之前的 duel 循环, 三种循环,你掌握俩就行了。好,第二个就不再说,那我们看第三个,第三个循环呢?叫做什么?循环?复循环是吧?好,复循环,我们在使用的时候注意 和加瓦那有点不一样,那加瓦是个什么? for 啥?三个条件是吧?加瓦是三个条件啊。 for 变量的处置化是吧?然后呢?判断 条件,接下来呢?自增,自减是吧? 自减。好,这里面是啥语句对不对?你来看一看啊。 oricle, 它这里面的写法呃,它这里面的写法是这样的。好,定一个变量,注意看这,看这看这, 就写个这都行了,就写个这都行了啊,来,我们看一看。 for 循环。好,那首先呢,还是 declare? d e c l a r e declare 接下来呢? begin end 啊,我定一个变量好, i int 类型,冒号 等于一,好吧,嗯,等于一, okay four 是不是 for loop and loop? 大家看啊, 他都和之前怎么样?一样,和之前一样,那之前一样的,这里面怎么写呢?别着急, 循环第二个啊, 第二个,大家看这个语法,他这个语法是这样的,我把它复制复制下来,你们看一看语法,注意看这个语法 啊,这种扯淡的语法呢,可以多看几个。这个,这个 step 呢?是一个变量,好,变量,然后有个印,看到吧, 那个一呢?是一个初值范围。好,他是初叫起始啊,起始值,那然后呢?这是一个什么 结束值啊?结束值,那咱现在呢?比如说我输出一到一百我输出一到一百,那咋办是不是?哎呀啊 是吧哎哎。然后呢 in 是吧?几一是吧?几个点?两个点是吧?结束值一百,那下面呢,你把它做一个输出复制 运行 看一下出来没有注意这里面有没有爱佳佳?没 没有啊,好在 p l c 口下放 循环怎么样也不用挨加加。好吧,他这个地方的印一点点一百就表示啥啊这个印就表示啊印就表示从这里面逐个取值好吧表示 逐个取直。 ok, 那我现在把它给注视掉行不行? 你看一下成不成?好像成啊,是不是大家看啊,你看啊,这地方是不是生病了一个便利 哎那我现在呢有人说老师这个可能是他的原因,那我换成一个 n, 我换成换成 n 啊,然后这地方呢是一个 n, 哎学东西啊,你得去探索哈,可以吧。好,那也就是说呢在方循环里面, 在 four 循环里面的变量 n 表示首先他怎么样自定义了一个变量是吧?从一到一百取值可以不用怎么样,先 初始化变量是吧。嗯那现在呢,我让大家比如说在做刚才的 求和,你会不会求和?你这时候是不是需要再来一个变量? vsam 是吧啊 vsam 然后呢 在哪在哪?求里边里边是吧。嗯,微下滑线萨姆等于微下滑线萨姆 加上 i 是吧?啊加上 n 对变得 n 了,哎。然后这轴轴从几到几 这直接一加一了啊对,这个应该是零是吧啊微上面应该是零啊,这个地方也是零。好,这应该是微下划线上面是吧, 是不是也是五零五零。好,那大家会发现这个 for 循环尽管有点有点扯,但是他也干了一件好事,是吧?省语法了,对,对不对?好,那我呢?比如说这样啊,我倒着来 double 来一下, 我要数数这个 n。 呃,我记得现在还有一个新的关键字啊, r e v r s e。 测试测,测试一下。啊,我记得有这样一个关键字。嗯啊 嗯,第四行, 我要去一下, 不对不对 啊。可以啊,可以有个道序啊。有个道序就是做一个了解吧。好吧,赠送一个, 赠送一个 revers。 关键字叫啥?道序是吧?好,道序就是啥,就是那个顺序从一百到一逐个递减。好了解啊, 反正都是了解的。在那,那他在哪个地方啊?在哪啊?在印之后是吧?啊?在印之后。

