00:00
从具体应用的特点来说,哪种锁更适合我们的业务明白,那么好,同学们请看,我们呢主要呢介绍前两种,也是现在企业里面用的最多的,而页锁呢是介于两者之间,指导一下即可,我们来先说表,所以表锁是把整张表都锁了,那么这个时候干嘛好?因为什么呢?我们呢可以看到。偏向于什么引擎开销,加锁,磁锁力度等等,我们也知道锁把整张表都锁了,你发生所冲突的概率还高呢,还高不高,那么这个时候,但是开玩笑的说一句,你把学校大门给我关了,整个学不是整间教室,你共享是整个学校,你一个人独享,那么请问一下别人还能跟你冲突啊,只有你一个人谁跟你冲突啊?但是反过来讲,这个时候就为你开一个学校,这并发度是最低啊好,那么呢,这些我相信好理解吧,那么OK,我们呢来看看下面我们找一些表呢来进行加锁和演示,由于这个时候要称分成读写锁的时候,我是不是需要看。
01:33
按另外一个session来进行演示和操作呀,那么呢,我们先建表吧,来看好我们这次的演示,这个时候这位七变成什么了,默认是京动TB啊,那么好,下面呢,我们呢,直接呢这么干,建表插数据查。各位亲,都有吧,好,那么这个时候mylo这张表是不是有ID name ABC de12345,没问题吧?好,下面我们呢,来看一下人为的手工档来锁表,假设我们现在要更新数据,要备份,我们这个是不是希望这个记录不动啊?我们来看看我们的读锁,共享锁,排卡锁分别是些什么位来我们呢?直接我这儿呢,先暂停一下录屏,调整一下屏幕哈。
02:30
好,那么呢,大家可以看我现在是不是建了31,三十二两个终端连接到了我的零零和数据库啊好嘞,太高,那么呢,我们呢,下面要干的活呢,是这样的,一手动增加一个表索,它的命令是lock table,介绍一下你要见表是不是叫create table,你要缩表是不是叫lock table,好,这样对比着来学,能通吧,那么干嘛呢?你要是锁了以后,它呢加表名字,那么你对这张表是要加读锁还是加写锁呢?我们呢来演示一下看看,那么这个时候同学们都知道我除了在这个库里面。
03:17
我有这些表以外,我是不是还有见过其他表,比如说show tables的,我这是有一张book表,我们book表好说啊,我们就随便用一个,我现在想干的事就是给book表。和刚才我们见的my look表加读索或者是写作听懂那么好,首先我们呢,先来看看show open tables干嘛呢?看看我们现在某些表有没有被锁过,那么言下之意,当你在判断调优surface的时候,如果觉得我的S数据库的表可能会被锁了,那么是不是也应该有一些查看锁的命令啊?那么第一个就是它收open table色,那么呢,将其打开了以后,那么同学们露眼。
04:12
大家看是不是有DB0629库的这张表啊?那么大家看这块in use,大家看是不是全是零啊?言下之意,什么没有锁啊,现在是不是和谐社会,天下太平好,那么现在呢,我给你整事,我非得给你上把锁,那么呢,我们呢,Lock table,假设我现在给我们的my lock上把读锁,给book上把写锁,没问题吧?那么呢,我们的命令lock table my lock给你上把读锁,Book我给你上把什么写锁?我们先来试验一下这个命令,言下之意就变成mylo张表示不可共享,Book这张表就被排他了。好,我们只是来试试这个命令啊,一加OK吧,OK,完了以后请同学们看收open。
05:13
Tables,我们呢,就明白了一个东西,就是说这儿是不是有一了,大家看是不是这个库的my lock表被加过一把锁,再来看这是不是也有一了,那么是不是证明这个库的这个表也被加锁了,好那么这个时候加是什么?有加该不该有解锁?好那么这个时候请同学们看一下我们示范表是不是unlock tables好那么呢,我们再来看看,先熟悉一下这两个命令,待会用unlock tables,注意现在查询我的系统里面,那么反过来讲,如果你的所有的库和表这些甚至数字更多,是不是性能越慢了,好那么这个时候我们呢,一回车,OK,再来看一眼同学们还有一码,那么刚才我们就以买洛克为例。
06:13
上一波是不是零一呀?这一波是不是变成了零?说明书就已经解锁了?好,那么呢,Lo table和unlock tables分别是加锁和解锁,那么这些有什么用呢?来,我们看看读写锁对我们的数据操作和系统性能会产生哪些影响和伤害?走,下面我们先加一把什么无锁OK,那么呢,Lock table my look read,亲,堵锁是不是共享的?好一回车加锁成功,我的问题来了,Select she from my lock,请。
07:13
哎,我自己对这张表注意我现在是不是锁表啊,我对这张表加了一把毒索,我自己三选一的始作俑者,我能不能查,请问现在三选二能不能查看,因为读锁是不是共享锁呀,好。好,请问同学们,此时我三选一在这张表上加了读所,请问我可否修改?注意我select是不是只是独操作,但是大家都知道增删版任何一个,现在update答案是不是写操作,也就是说读没问题了,我跟你对着干,我要写试试呢,而且大家想一下,我们三一能不能现在修改myloook,好思考一下。
08:41
好,我们呢,来执行一次试试,注意现在是不是三选一往买洛克表加了一把毒锁呀,毒锁是共享锁哈,那么呢,这个时候大家请看一下能不能读啊,好三步哈,第一步能不能读自己,二能不能修改自己,第三问我能不能读别的表,什么叫别的表呢?兄弟们,现在是不是三已锁了?诺,我不跟你争,我32,当然就算跟你争,我是不是也能读啊?好,三选二说在同样的库下面我去读book可可可不可以?
09:42
现在我的问题是三选二的毒是不是很爽,没有受到任何干扰和操作,因为毒共享嘛,我的问题是三选一一读自己可不可以,改自己可不可以?现在我的问题是我要去读别人三一家的锁是不是锁了麦洛克表我有没有动过?不可本库的其他表我是不是一概没有动过呀?所以说我们可以推测到的结论是行还是不行?压大小买定律少行的极少,OK,不行的举手啊,你们那几个不举手的,我杨哥很小心眼,我记住你们了啊,好。
10:42
来同学们大家看一下哈,Send from book行不行?好,这个时候大家还记不记得我们原来在red讲过一个主从复制啊,那个从既要set的时候是不是不让写呀?好,这种相通的概念,也就是什么?兄弟你这锁着MY洛克,你准备锁my soq,出于一种自我保护,兄弟你得给个结论性的东西,你要准备锁多长时间,你是不是得把当前的账给我清了以后,你才能干别的事啊,是不是,否则每个人加法都锁,你加锁了要干嘛?你是不是要保证数据不变,比如说你要先备份数据,你备份完了以后你是得解锁呀,因为还有一个更恐怖的现象,就是什么呢?你程序如果说导致了这种锁柄,我现在的问题是30,那么现在我们重复。
11:42
213选一读自己可不可以改自己写操作这张表行不行?读别的表行不行?那么言下去是兄弟,三乘一你只要加了毒索,请把钱请把前面的占清了以后你是不是在干别的事啊?但问题是诈三乘二写查被锁的那张卖络可不可以?查本库的其他表可不可以?现在我的问题是我要改31锁过的麦洛克,我能不能改?不着急哈,我们学写,各位亲,抬头我们分析啊,三选一刚才的读写操加完读索以后的三种读写操作咱们是不是清楚了,现在咱。
12:42
呢?加完MY洛克,三神一家的始作俑者,干坏事的三省一家的毒所,现在是三乘二,加完以后毒所共享,我是不是可以去32可以去查ibook 32可以去查ibook,其他没有加锁的表是吧?现在我的问题是大家猜看猜猜看我锁着呢?31我夹着lock,我是不是还没有unlo table解锁呢?我问的是32可不可以去操作my look进行写操作,大家思考十秒钟,好,那么同学们呢?选择了行不行?不知道是不是三种答案呢?终于全班举手了啊,来,同学们,我们来看看现在三选一在mylo夹着读所,那么三选二要想对加了读索的mylo操作,它的动作会是什么?这个时候我们回车一看行还是不行?
13:42
行不行,不知道都不是,是不是出现了第四种答案,属于组好,这个时候如何破呢?那么我们反过来想,弟兄们,如果说在系统里面再这样,有多个三乘二,三乘三,三乘四,由于你把表锁了,咱们大家都只能只能在这堵着。
14:14
听懂了吧?那么这个时候跟我讲系统性能慢不慢啊?那么这个时候我们是不是只能是unlo tables,注意看好我一现在是不是要解锁了,看好右边是不是一组一解锁以后这阻塞的情况他马上抢到了以后迅速推出自己的数据啊,大家可以看我等了多长时间,那么呢,你可想而知,如果说正常的系统里面随时有加了,被落克了以后加了锁随便要等个四五十秒甚至一分钟以上,你这个系统能读吗?听懂了吗?而且还有一个问题,什么这才是三十二一三神2万,且三乘二属于剁手的,我相信你就明白为什么一个简单的网站后面需要这么多后端优秀Java工程师来进行支撑和运维,听懂了吗?
15:14
OK,那么这些就是同学们是么?最重要的是么知识好,那么这我们可以看一下,我们是不是为mylo表加了读索呀,读阻塞写的例子啊,什么意思啊,前面加了读索了以后写能不能写我们这儿是不是三乘二,你想update你这要不解锁,我这是不永远阻塞啊,所以说这个时候我们呢,一三乘一加所三审二连进来,当前三审可以查询该表记录,我我在这个买的所肯定可以查,三有的因这是不是挂着一笔账呢?再来其他三省,三省二可以查询或者更新其他未锁定的表,没问题吧。
16:14
那么再来当前三审插入或者更新锁定的表都会提示报错,不管是插还是改,没问题吧,其他三审插入或者更新锁定会干嘛一直等待,那么呢,最终我们大家看unlock tables释放了以后,32获得锁,我们的写操插入或者update的写操作是不是才能够完成啊?所以说加了读锁以后,自己可以读,但是你不能去改,或者再去读其他你没加锁的表,为啥前面的账你是产品清了,第二个三选二干嘛?可以查看,可以查看你锁定的表,可以查看其他未锁定的表,但是你要操作myloook,但是你锁过的表,那么这个时候是不是只能是阻塞等待呀,因为阻塞等待是不系统,性能会下降啊。OK,好,那么同学们这个呢,就是我们的加读锁的一个case,好,大家呢,下课休息一下。
我来说两句