首页 > 其他分享 >KingbaseES LWLock buffer_mapping 等待

KingbaseES LWLock buffer_mapping 等待

时间:2024-03-28 15:46:32浏览次数:17  
标签:HASH buffer mapping 索引 LWLock 缓冲区 KingbaseES

在KingbaseES数据库中,会话在将数据块与共享缓冲池的缓冲区相关联时,会触发“LWLock buffer_mapping”等待事件。
这类事件涉及到一种轻量级锁(lwlock),类似于Oracle中的闩锁。这个锁在不同的数据库中可能有不同的名称,但通常被称为buffer_mapping或BufMappingLock。它主要用于实现对HASH BUCKET的有序访问。在KingbaseES,为了降低多个后端进程间的访问冲突,采用了分区锁机制,将整个HASH TABLE分成多个部分(默认为128个,具体数目视版本而定),每个部分配备一个lwlock。当多个后端进程访问缓冲区时,它们首先计算HASH值以确定HASH TABLE的位置,然后获取相应的 BufMappingLock,以便进一步访问HASH TABLE、查找HASH CHAIN,并最终定位到特定的BUFFER。如果两个后端进程访问的BUFFER位于不同的分区锁范围内,则不会发生冲突;如果位于相同分区,则可能产生冲突。

“LWLock:buffer_mapping”等待事件在KingbaseESV8R6数据库中发生于以下几种场景:

  • 当进程在缓冲区表中搜索页面,并尝试获取共享缓冲区映射锁时。
  • 当进程需要将页面加载到缓冲池中,并因此获取独占缓冲区映射锁时。
  • 当进程从缓冲池中删除页面,并获取独占缓冲区映射锁时。

这些场景反映了数据库在处理缓冲区访问和管理时的不同操作需求,其中锁的获取是为了确保数据的一致性和完整性。

当“buffer_mapping”等待事件数异常增高时,可能的原因包括:

  • 执行大型长时间查询。
  • 索引和表的膨胀。
  • 进行全表扫描。
  • 共享缓冲池大小不足。

要解决“LWLock:buffer_mapping”等待事件,可以采取以下措施:

评估索引策略:确保索引和表没有过度膨胀,这可能导致不必要的页面读取。对于含有冗余行的表,考虑数据归档和删除无用行,然后重建索引。这通常比在维护索引的同时清理表更高效。

优化常用查询的索引:检查sys_stat_database中的tup_returned和tup_fetched指标,确认索引是否能够有效支持查询。如果读取的行数明显高于返回给客户端的行数,可能需要优化索引。

减少缓冲区需求:通过实施小批量操作或对大表进行分区,降低对缓冲区的需求。

增加共享缓冲区大小:如果有足够的内存,可以考虑增加shared_buffers参数的值,这有助于减少等待事件。

通过这些方法,可以有效减少LWLock:buffer_mapping等待事件的发生,提升数据库性能。

标签:HASH,buffer,mapping,索引,LWLock,缓冲区,KingbaseES
From: https://www.cnblogs.com/kingbase/p/17931003.html

相关文章

  • KingbaseES V8R6集群运维案例之---主备failover切换原因分析
    案例说明:生产环境,KingbaseESV8R6的集群发生failover切换,分析集群切换的原因。适用版本:KingbaseESV8R6集群架构:137.xx.xx.67主原备库137.xx.xx.94原主库137.xx.xx.68vip地址一、日志分析1、分析原备库hamgr.log如下所示,通过原备库hamgr.log日志获取到具体......
  • KingbaseES V8R6数据库运维案例之---用户权限导致的备份恢复故障
    案例说明:由于限制了用户对数据库的访问,导致在执行‘sys_backup.shinit’初始化物理备份时,执行失败。适用版本:KingbaseESV8R6一、问题现象如下所示,执行‘sys_backup.shinit’初始化物理备份:1、执行初始化失败[kingbase@node201bin]$shsys_backup.shinitERROR:Con......
  • MappedByteBuffer VS FileChannel:从内核层面对比两者的性能差异
    本文基于Linux内核5.4版本进行讨论自上篇文章《从Linux内核角度探秘JDKMappedByteBuffer》发布之后,很多读者朋友私信我说,文章的信息量太大了,其中很多章节介绍的内容都是大家非常想要了解,并且是频繁被搜索的内容,所以根据读者朋友的建议,笔者决定将一些重要的章节内容独......
  • CommandBuffer使用1
    是用来干嘛的?在渲染的某个步骤,插入额外的渲染处理。比如:在渲染不透明物体前,渲染一个正方体;在渲染不透明物体后,渲染一个球体。CommandBuffer支持的可插入点还是很多的,加在Camera上时,支持的可插入点在CameraEvent枚举上;加在Light上时,支持的可插入点在LightEvent枚举上。 和G......
  • Key-N-Value--基于Protocol Buffers的树型协议处理引擎
    导言KNV是Key-Value协议的无限嵌套和模式自由的扩展,允许使用者快速访问或修改ProtoBuffers协议中的一部分或者多个部分,KNV原是一个面向对象缓存系统的一部分,后面作为腾讯第一批开源组件对外开源。KNV的理念也申请并获得国家专利。​​​​​​​项目地址:GitHub-shaneyuee/......
  • go-buffer-pool
    go-buffer-poolgo-buffer-poolpackagepoolimport("math""math/bits""sync")//GlobalPoolisastaticPoolforreusingbyteslicesofvarioussizes.varGlobalPool=new(BufferPool)//MaxLengthisthemaximumlen......
  • 怎么解决因全表扫描带来的 Buffer Pool 污染
    全表扫描这种情况的查询,很多缓冲页其实只会被访问一次,但是它却只因为被访问了一次而进入到young区域,从而导致热点数据被替换了LRU链表中young区域就是热点数据,只要我们提高进入到young区域的门槛,就能有效地保证young区域里的热点数据不会被替换掉MySQL是这样做的......
  • Java中String、StringBuffer、StringBuilder 的区别
    目录1.String2.StringBuffer3.StringBuilder4.使用情况如果帮助到你,别忘了点赞收藏关注String、StringBuffer和StringBuilder在Java中都用于处理字符串数据,但它们之间在功能和性能上有一些关键的区别:1.String不可变性:String类的对象是不可变的。每次对String对......
  • Lecture 06 Rasterization 2 (Antialiasing and Z-Buffering)
    Lecture06Rasterization2(AntialiasingandZ-Buffering)Antialiasing反走样采样理论发生在不同位置(如照相)发生在不同时间(如动画)SamplingArtifacts(指图形学中的错误、看上去不对的地方、瑕疵)锯齿摩尔纹Wagonwheeleffect行进的车轮看起来似乎是向后转的......
  • BufferedInputStream详解
      咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java之IO流啦,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~前言  在进行Java编程时,避免不了要进行一些文件操作。虽然Java提供了很多类......