昨天直播的时候有个兄弟在问 update 一张小表,这张表就两百条数据,每天都会出现,迈斯克是怎么回事?像这种小表都没必要见锁影,因为太小了,走全秒扫描比走锁影扫描更快 出现。卖烧烤应该是在等待支援。他看了下监控,持牌使用率一直保持在百分之八十以上,那大概率就是他的问题了 啊。不对的是要写日字的出现, i o 等待, coc 同样也会等待就会出现。 macco 现在持拍是性能平静,看看是什么原因导致持拍使用率这么高的。是 macco 的话优化一下是共享内存,设置过小,可以调整一下。还有一种情况就是在等待,所 也可以看监控,但不一定能够看出来,因为监控的力度比较大,不一定能够发现,那就只能通过脚本来抓取信息了。
粉丝7515获赞1.7万

百分之九十以上的同学呢,都会用到数据库的锁引,但是对于锁引的原理啊,可能有些小伙伴呢就有点懵逼了啊,尤其是在面试的过程中,锁引的原理呢,一直是面试官重点考察的对象。本期呢就跟大家一起来聊一聊数据库的锁引。 那么说到所以呢,大家的印象呢,就是查询的速度会变快,那么我们从官方的定义来看呢,所以存在的目的也就是为了提高数据库的查询效率, 效率就是金钱,所以不管你是 dba 还是 c u i d boy, 几乎天天都要跟索颖打交道。 即使说你没有主动的去创建锁引啊,界面的时候呢,数据库也会默认的帮你创建一个锁引,当然如果你设置了主键啊,那么就会把主键设置成锁引,所以不管你的表有没有主 主动设置锁引,其实他都会有一个默认的锁引,这个默认的锁引呢,就是数据库里面的主界锁引,又叫拘束锁引。为啥一定要有这个锁引呢?这是因为主界锁引里面存储了这条记录的所有数据,只要这条记录存在,那么就会有主界锁引。 我们都知道买色后的,所以呢采用的是毕加数对吧?主见,所以也不例外,按照毕加数的规则排列好主见 id 从小到大排列,呃,这个时候呢,如果要插入一条记录啊,就会先计算 id 在毕加数上的位置, 对吧,然后直接插入,从表现形式上看的话呢,其实就是一个叶子结点啊,叶子结点下面呢又带了一个数据页,什么名称啊,操作时间啊等等这些字段值啊,这个是逐渐锁印,那么什么是二级锁印呢?从名字上看啊,就知道 这个是千年老二,属于辅助的锁引,所以呢他又叫二级锁引,除了组件锁引以外呢,你其他家的所有的锁引其实都是二级锁引,比如一张用户表, id 呢,是主键,那毫无疑问呢, id 就是主键锁引了 啊,其他的比如说手机号啊,用户名啊这些,如果加了锁引呢,那就是二级锁引,逐渐锁引里存的是记录,那么二级锁引里存的是什么呢?答案是逐渐锁引, 比如说啊,我们给手机号加了锁引,这个时候就要增加一个 b 加数,对吧?把手机号按照 b 加数的规则从小到大进行排列, 这时候如果我们要通过手机号来查找记录的话呢,首先就会在手机号这棵毕加数里面,我们先找到手机号这个叶子节点,找到手 手机号对应的主键 id, 再去主键锁引数啊,这个必加数里面找到这个 id 才能拿到数据。所以二级锁引存在的目的呢,就是为了找到主键锁引, 因为所有的数据呢都在逐渐缩影里面。好了,本期的视频呢就是先来,如果您对本期的内容呢,有任何疑问,欢迎大家在评论区给我留言,谢谢大家。

大家好,我是读林港的北冥诶,今天我们来聊聊这道面试题啊,你知道哪些创建所引的原则吗? 啊,那么所以虽好啊,但也不是说无限制的去使用。那么我们可以参考右边为大家准备的几个例子啊。首先第一个诶,最左匹配原则。 那么这个呢,是我们组合所以里面非常重要的一个原则啊,也包括我们再去进行 net 的时候。比如说哎,我们给 a b 这两个字去建立了一个锁引对吧?建立一个联合锁引。如果是说哎,我们在我们的威尔条件里面,我们只选择了 b 作为一个条件哎,那么他是不会走锁引的 好。那么这个呢是第一点好。那么我来讲第二点,较为频繁,作为查询条件的字段采取建立。所以你如果是说哎,对于那些查询中比较少能够涉及到的一些类,然后呢,哎,他的一个重复值呢, 可能还比较多对吧?那么这种时候呢,哎,他就不适合去建立锁引。因为我们要知道哎,建立锁引呢,他本身是有成本的,包括他的一个空间占用。哎,包括我们去创建和一个维护成本,然后我们去进行增商改的时候,他一样要同步的去处理我们的锁引。 所以说在效率上面来说的话,创建锁引他反而可能会导致一些下降。所以说在这一块我们还是要去做一些权衡好。那么我们再来讲第三点,更新频繁的字段不适合去建立锁引。那么我们都知道哎,我们在更新数据的时候,实际上他也要去同步的去更新我们的锁引的。 如果是说哎,你这个字段更新的非常频繁,哎,而这个字段呢,哎,你查询可能并不是那么多。嗯,所以说我们要从一个成本角度来考虑哎,去做一个权衡,可能他并不是那么合适。好,那么来第四个,区分度太低也不适合。因为在我们的这个一诺 db 里面,哎,他的锁引是由 b 加数所决定的对吧?哎,所以说 你能带的效率呢,是非常有限的。而且哎,我们的辅助,所以呢,哎,他还存在一个回表。如果说哎,你数据密度过于小的话,那么性能可能还不如直接全票扫描。但是哎也有一种场景是比较例外的,跟大家举个例子,比如说哎,我这个里面的数据对吧?我一列里面只有三种数据,一、 二、三。那么前面两个呢? a 数据量占了百分之一,那么后面这个三呢,占了百分之九十九。但是第二个条件来了, 就是说你的一和二,你在查询的这个比例,哎会比三高很多。那么这个时候呢,也是可以去见锁影的。因为我们一和二的他一个数据密度小,所以说他在搜索上面来说的话,哎,他会比全版扫描会快很多。 那么像上面这种场景呢? a 它是一种比较特殊的场景啊。好,那么我们再讲第五点,尽量的扩展缩影,不要新建缩影。那么这 这个问题呢,实际上也回到了我们的成本问题,包括包括空间成本啊,维护成本啊等等等等。那么我们在查询的时候,哎,我们很有可能是一些多条件的,对吧?那么我们就要去观察我们业务里面的一些 sky 语句, 哎,如果说能够扩展成组合缩影呢?我们就去用组合缩影,我们尽量的去少见一些缩影。好。那么这个呢?就是我们今天所聊到的一些内容呢。哎,我们下节课再见。

这节课我们要学习一下上亿所引这个借点,我们打开这个打入所引,这时候我们看到这里一个有一个上亿所引借点, 这个呢我们可以看到呢,英文是拉斯 index, 我觉得这个翻译为为最后一个缩影比较好,就是他反馈的是我们缩影值,最后一个值是六, 这个呢和长度有所区别,我们长度的话是因为是从零计算,他就是七,这个他就和长度啊,返回只就差了一个一,然后我们可以看一下啊,我们可以在这里 再加入一个长度,让我们分别打一下这两只 打印支付串,然后用一个键盘零,然后用一个键盘一来分别来打印一下, 第一个打印的是他的长度,第二个打印的是他上衣缩影这个节点。 好,然后我们编一下,我们运行一下,看一下区别啊,当我们按零的时候,我们给他返回值就是七,按一的时候他返回值就是六, 就可以理解了,我们这一个上衣缩影和长度的区别啊,这一刻我们简单的了解一下我们这个上衣缩影的区别啊,这一刻就到这。

刚刚我忽然有一个奇妙的想法,我忽然发现,微服务的本质似乎和哈西游某种一曲同工之妙。或者说,无论是微服务还是 ecs, 还是大模块的划分,本质上似乎都是一种哈西,或者说有点类似于数据库的缩影。 进一步讲,其实代码至于程序员,有点像数据库置于用户,程序员写代码读代码查 bug 的本质,和用户读写数据库是很相似的行为。那么微服务或者模块的切分,本质上就是在做缩影,就是在做哈西画。 那这是我刚刚在路上的一个偶然的想法,也深挖不出来什么特别的意义,所以就只能到这里了。有兴趣的小伙伴可以给我点赞、关注、收藏,然后意犹未尽的小伙伴可以看看我的橱窗,比心。