00:00
什么呢?行表所的案例分析和级别演示,顺便说一下什么这个所以失效和间隙所的危害,那么来我们见表注意兄弟们,我现在什么引擎了?好,表明叫test in DB lock2字段,一个整形,一个Y叉,那么这个时候一堆插入看好此时我为这张表的A字段是不是单独建了这么一个引擎,那个索引,我认为这张表的B字段是又建了这么一个引擎,请告诉我单质索引还是复合索引?OK,那么这个时候同学们请看我呢一口气执行,那么呢,我们呢,收工跑到这一张贴,大家看,请看我这是不是直接过来了,以后s select test1 no DB look1吧。
01:00
好,那么这个时候我们呢建表完成,那么呢,我们呢来演示一下含标所的基本演示,由于同学们都知道,现在默认大家都明白,5.5以后的话,差不多是不是都是DB是默认数据库的引擎啊,也记什么概念,事物的那个卡提交它是不是每一个分号,你只要是写操作,它自动给你提了,由于我们要演示,我现在属于什么呢?把自动提交关了听懂,那么这个时候呢,我们呢这么干,我们的案例用的是S塔奥卡密塔等于零,先给它光了。这个时候咱们自动提交时就施工了,那么也就是说你必须得手动的写commit才会提交,那么好,Set out commit设置为零,Set out commit设置为零两个,那么好现在设置为零了,以后我们干的活呢?先更新一下我的这张表,大家请看我们现在是不是加的是行锁呀,我只锁一行哦,那么现在我们呢,After,然后呢,Test in no DB lock干嘛呢?B等于,比如说我这4000这条记录,我把它改善4000里1Y等于四。
02:49
没问题吧,那么好,同学们请看一下,此时我一回车大家觉得有没有问题啊,没问题,没有look table吧,注意咱们现在可是说函数现在一个三审一要操作这张表的第四行,没问题吧,大胆说是不是好,现在是不是就是跟以前一样普通的发了一条circleq啊,现在我们可以看一下干这个事,第一个我们一查询的时候自己查一下,我们得看看第四条记录是不是4001听懂,好同学们一回车没问题吗?现在我们想看的问题是这货假设test什么呀,In DB lock,这个时候大家请看一下。
03:49
我们的内容是多少啊?那么也就是说现在己之所写这句话能不能理解呢?己就是自己SECTION1是不是自己读己之所写?因为我把auto卡一开,自动提交一关,根据数据库默认RR的隔离级别,我是不是不应该出现单独啊?那么换句话说,别人没提交的数据,我三审二是不是应该读不到啊?那么读己之所写这个意思清楚了吗?比如说我们都用过手机上新浪微博吧?
04:35
你现在手机上照了一个照片,发一条微博,请问第一你现在发,你跟我说难道整个地球上的所有用户都能看得到了吗?为啥新浪是亿级别的分布式的架构系统上亿级别,但是也就是说什么我们在学noq c理论的时候,由于P需要保证的以后,我们是不是在C强一制性和A高可用之间做了一个选择啊,比如说我们的京东这个网站,淘宝上网站是不是一定只能选AP不能选CP啊,理由呢,我们来做这么一个设,像这些大型的网站,包括刚才的手机新浪微博是不是一定是分布式的系统,那么这个时候由于CP数据库理论,P分区容错性是必须要保证的,我们只剩下在C和C。
05:36
强一致性和A高可用之间选好,假设我们选A高可用,那么这个时候代表我要牺牲强一致性,同意吗?那么什么叫强一致性呢?我们来试试两派相衡取其性的原则,第一个你现在保证A我要牺牲C,看看此路可不可以,什么意思啊,我现在手机新浪微博,我发一条第一人应该读到的是不是应该是我自己啊,我自己发一条微博,我自己都先读不到,那么这个产品,这个测试是不是吃干饭的呀?那么这个时候就证明什么?我保证我自己本人先发的,读自己之所写,读己之所写,先通过同意吗?但是你跟我讲,是不是你这一秒钟发了这个微博以后,全地球的所有人都能看得到,不见得是不是应该有一个什么延时个两三秒以后,这种分布式的系统以后干。
06:36
啊,慢慢的大家才看得到啊,换句话说,你不可能要求我这儿发了以后,整个地球失去于人,全部都要看得到,因为这种叫强一致性,他做不到,我一反了CP理论,听懂了吗?那么反过来讲,我们为什么要这么干呢?是想双11这天一个网站他贪了。
07:01
也就是说A高可用这一只不足以保证,那么跟我讲,那么那个时候如果双11那天京东淘宝如果贪了,那么咱们是不是帮他上头条啊?那么这个时候我相信各大门户网站是不是都会报双11当天叉叉叉网站保障不利,是不是就挂了?那么言下之意什么意思呢?我登录这个电商网站,我应该是关心到底有多少个人对这个商品点称点赞,到底有多少个人浏览过这个包包的这种数据强一致性保证C还是应该保证整个网站不贪,先保证A呀,那么两害相逢取其亲,假设你双11的时候,你更关心的是个网站别摊,我能不能下单,到底说有多少个人看过这个包包,点过赞,发过帖子,到底是1376243个人喜欢这个包包,还是69个人喜欢这个包包,你是不是这个数据一致性你可以弱于。
08:01
高可用性啊,那么所以说就像刚才所说,回到我们手机新浪微博C强一致,我这儿发个微博,全地球人都要看得到,我有大家都得有,那么你牺牲,你保证C就要挂掉,A同意吧,那么第二种我们两害相横娶其亲,缓冲一下有点稍微有这么一两秒的延时,我先保证A高可用,整个网站整个系统平台架构可用,但是数据的一致性有这么在合理范围以内的一两秒的延时,这个时候大家是不是还可以接受啊,那么所以说这个就是no cp理论的话,保CP还是保AP的绝对值,一定是整个网站这样的大的,这样平台一定只能保AP,最终又被理论,是不是最终一致性再把那些数据修复和存进去啊,好,那么现在说完这个以后,我们呢,来可以看一下我们现在。
09:01
就会明白,如果说我这边没有卡的话,这哥们是不是还是只能看到4000啊好,那么这我们呢,这个时候第提交大家看我这边select好,那么呢,我们呢,好。我们这块假设A等于四没问题吧,OK,我们呢,一回车来试试现在这块是不是因为还没那个提过去啊,好,那么这块我们呢,可以来看一下哈,我这边是不是也暂时看不到啊。好好,这边呢,我们是不是也再一次一下试试,好那么这个时候同学们我们来看一下,有了吗?是不是有些重复读啊,OK,那么呢,我们呢往下看,现在我们呢,继续往下走了,以后我们呢,可以看到,如果说现在我继续干这个事儿。
10:25
我是不是把它改成4002啊,好,同学们请看那边的,我是不是把这边也是卡密也给关了,好,我们来看一下这个情况,第一个没问题吧,好,现在。而updateta testta DB lock set b等于4003Y啊,A等于多少四兄弟们行数的话,哥们儿,我这是不是数了第四行我们也知道此时的是我现在一卡密特了以后4002,言下之意,我在update又操作了以后,我是个卡密,卡密没有卡密了以后,我现在关心的问题是我这边马上也update,大家认为什么鬼好同学们我们来看一眼哈。
11:34
是不是阻塞呀,好那么这个时候干嘛,我们是不是只能commit呀欧了吧,但是别忘了这一边是不也得呀,所以说为了保险起见,也就是说相当于说这款重新更新成4002卡了以后这边是不是也要卡呀,他这边是不是也做了update,因为我现在是把两个客户端都是一的,为了零啊,好那么这个时候我们来两边是不是多次保证的行了,卡密保证没问题吧,是不是303。
12:25
哎呀,怎么又执行了一次,那么来同学们,现在我们来执行落考,大家看是不是都是4003了,好,那么现在我们可以看得看得出我们提交更新了以后,解除了阻塞,后面的更新是不是才能够异常啊,后面更新是不能正常啊,好,那么下面我们呢,再来这个问题。现在我呢,我把它更更新成4005可以吗?同学们好。
13:11
好,同学们请看我select的几号,我这是有五号记录,好我这是是有九号记录,我的意思就是咱们加的是行锁,刚才咱们两个是都是抢第四条记录,那么现在咱们你动四我动九可不可以?言下之意什么意思呢?就是说如果三乘已经先动四了,哥们,我是不是三神二也要动同一行,我只能阻色,现在你三神一去玩四,我三神二去动九,那么大家觉得我三乘二还会不会是阻塞?好我们往下看啊,对称。
14:00
不是吧,这么倒霉,Update test in DB,这个时候是不是lock s b等于九,001Y啊,A等于九,没问题吧?眼下几句兄弟,咱们两个大路朝天,各走一边,你动四我动九,没问题吧?那么好,现在我们一回车。OK吧,换以前,如果我没有卡密特之前,兄弟你要来跟敢跟我抢,同样是第四条记录,你是不是叫要阻塞,但是现在我不跟你抢,我去动脚,那么正常来说,我是不是也应该马上出现宽OK才是对的呀,那么这个时候我一回车,说明咱们两个是不是大路朝天各走一边啊,由于我两边都设了sat奥塔是等于零的话,那么我这边是不是两边都commit没问题吧?那么言下之意,如果两边都卡密特顺利的话,这是不是应该看到4005,这个是不应该看到9001啊?那么大家看40059001通了吗?那么这边大家请看我是不是也应该是40059001啊?所以说寒锁就是给你分开,那么咱们两个之间是不就是你动第四行,我动第五行各玩各的呀,OK,那么呢,这个呢,就是我们相关的一个。
15:29
反锁的基本演示,OK,同学们,没问题吧?好,那么早上呢,我们就先到这儿,大家下课休息吧。
我来说两句