等待事件含义

当会话将数据块与共享缓冲池中的缓冲区关联时,会发生此等待事件。

类似Oracle cbc闩锁的是一种Kingbase的轻量级锁lwlock,这个锁的名字在不同数据库版本中可能有所不同,我们统一称之为buffer_mapping(BufMappingLock),这个轻量级锁用于HASH BUCKET的串行化访问。因为在每个buffer 访问中都需要使用这个锁,因此和Oracle一样,Kingbase采用了分区锁的方式,将整个HASH TABLE分为多个分区(缺省位128个,不同版本缺省值会有不同),每个分区使用一个lwlock。

当有多个backend进程来访问buffer cache的时候,首先通过计算HASH值,找到HASH TABLE的位置,然后获得相关的BufMappingLock,才能去访问HASH TABLE,找到HASH CHAIN,最终找到对应的BUFFER。当两个BACKEND访问的BUFFER属于不同的分区锁控制的时候,不会产生冲突,反之会产生冲突。

如图:两个进程同时以独占方式获取 BufMappingLock 各自的分区,以插入新的数据条目

LWLock:buffer_mapping等待事件发生在以下场景:

  • 进程在缓冲区表中搜索页面并获取共享缓冲区映射锁。
  • 进程将页面加载到缓冲池中并获取独占缓冲区映射锁。
  • 一个进程从池中删除一个页面并获取一个独占缓冲区映射锁。

分析等待事件增加的原因

当buffer_mapping 增加到不寻常的值,可能的原因:

  • 大型长查询
  • 膨胀的索引和表(膨胀的表需要更多的缓冲区分区映射关系)
  • 全表扫描
  • 小于工作集的共享池大小(很常见的原因,考虑增加共享缓冲池以减少此等待事件的发生)

解决

监控缓冲区相关指标

LWLock:buffer_mapping等待高峰时,调查缓冲区命中率。您可以使用这些指标来更好地了解缓冲区缓存中发生的情况。检查以下指标:

  • BufferCacheHitRatio

    此指标衡量由数据库集群中数据库实例的缓冲区缓存提供服务的请求的百分比。您可能在 LWLock:buffer_mapping等待事件发生前看到此指标减少。

  • blks_hit

    此指标指示从共享缓冲池中命中的块数。 LWLock:buffer_mapping等待事件出现后,您可能会观察到blks_hit峰值.

  • blks_read

    此指标指示需要将 I/O(pages)读入共享缓冲池的块数。LWLock:buffer_mapping等待事件发生前,您可能会观察blks_read的峰值。

评估索引策略

要确认您的索引策略不会影响性能,请检查以下内容:

  • 索引和表膨胀

    确保索引和表膨胀不会导致不必要的页面被读入共享缓冲区。如果您的表包含未使用的行,请考虑归档数据并从表中删除死亡行或没必要的行。然后,您可以为调整大小的表重建索引。重建索引显然比vacuum表的同时维护索引的效率更高,因为vauum索引时可能需要反复用到maintenance_work_mem.

  • 常用查询的索引

    要确定您是否拥有最佳索引,sys_stat_database中tup_returned指标显示读取的行数。该 tup_fetched指标显示返回给客户端的行数。如果 tup_returned明显大于``tup_fetched,则可能无法正确索引数据。此外,表统计信息可能不是最新的。避免一个表上创建超过5个索引。

减少必须分配buffer数量

要减少LWLock:buffer_mapping等待事件,请尝试减少必须的缓冲区数量。一种策略是执行较小的批量操作。您可以通过对很大的表进行分区来实现较小的批次。

调大共享缓冲区

如果系统可用内存充足,调大shared_buffers参数,可一定程度规避等待事件LWLock:buffer_mapping。

KingbaseESV8R6等待事件之LWLock buffer_mapping的更多相关文章

  1. KingbaseESV8R6等待事件之lwlock buffer_content

    前言 等待事件是排查数据库性能的指标之一.简单理解,cpu在处理业务时由于业务逻辑,和不可避免的数据库其他原因造成的前台进程等待,这里的等待事件包含buffer类,io类,以及网络类等等,当我们遇到等 ...

  2. Oracle Tuning 基础概述01 - Oracle 常见等待事件

    对Oracle数据库整体性能的优化,首先要关注的是在有性能问题时数据库排名前几位等待事件是哪些.Oracle等待事件众多,随着版本的升级,数量还在不断增加,可以通过v$event_name查到当前数据 ...

  3. SQL SERVER中的OLEDB等待事件

    OLEDB等待事件介绍 OLEDB等待类型是SQL SERVER 数据库中最常见的几种等待类型之一.它意味着某个会话(SPID)通过SQL Server Native Client OLEDB Pro ...

  4. ORACLE等待事件:enq: TX - row lock contention

    enq: TX - row lock contention等待事件,这个是数据库里面一个比较常见的等待事件.enq是enqueue的缩写,它是一种保护共享资源的锁定机制,一个排队机制,先进先出(FIF ...

  5. ORACLE等待事件: log file parallel write

    log file parallel write概念介绍 log file parallel write 事件是LGWR进程专属的等待事件,发生在LGWR将日志缓冲区(log_buffer)中的重做日志 ...

  6. 数据库服务器CPU持续百分之百、部分Session一直处于执行状态---等待事件为:asynch descriptor resize(Oracle Bug )

    问题描述: 项目反馈数据库服务器的CPU持续100%的情况,跟踪发现很多活动会话的等待事件是“asynch descriptor resize”,并且这些会话一直处于Active状态,而这些会话执行的 ...

  7. DB SQL Monitor 阻塞及等待事件监控工具

    SQL Monitor Designed By zhaoguan wang 说明------------------------------------------------------------ ...

  8. truncate表hang住(等待时间较长),出现enq:RO fast object reuse等待事件

    有一个应用truncate表等待了一晚上,一个定时任务,跑了几年了,今天早上来发现昨晚没有执行完成,hang住了,查询发现等待事件 fast object reuse. 10.2.0.4的库 Bug ...

  9. Oracle等待事件db file parallel read

    SQL> select event#,name,parameter1,parameter2,parameter3 from v$event_name where name = 'db file ...

  10. Oracle常见的几种等待事件

    1. CPU time CPU time其实不是真正的等待事件.是衡量CPU是否瓶颈的一个重要指标.一般来讲,一个良好的系统,CPU TIME 应该排在TOP 5 TIME Event的最前面. 当然 ...

随机推荐

  1. Idea:Fetch failed: fatal: Could not read from remote repository

    今天在idea工具中fetch github仓库报错:Fetch failed: fatal: Could not read from remote repository 查了以下需要调整下setti ...

  2. 从图纸到BIM到数字孪生城市(元宇宙),易如反掌!

    当智能建模平台与虚幻引擎相遇时,它们又能碰撞出怎样的火花呢? 智能建模怎么玩? 以南昌某职业学院项目为例,这个项目总共有16栋楼,我们直接用智能建模平台"bim.zonst.com" ...

  3. ABP模块签入GitLab后自动打包并推送到ProGet

    # 1.添加一个名为下划线的解决方案文件夹 # 2.把解决方案根目录下的几个必要的文件添加到上述文件夹下 # 3.修改NuGet.Config,添加私有NuGet服务器的网址,并配置用户名和密码: A ...

  4. 【Azure 存储服务】Azure Blob上传大文件(600MB)出现内存溢出情况(Java SDK)

    问题描述 Java 云端开发,调用 blob 上传会产生内存溢出,Java上调用的方式如下: InputStream inputStream = new BufferedInputStream(new ...

  5. 一文上手图数据备份恢复工具 NebulaGraph BR

    作者:NebulaGraph 工程师 Kenshin NebulaGraph BR 开源已经有一段时间了,为了给社区用户提供一个更稳.更快.更易用的备份恢复工具,去年对其进行了比较大的重构.Nebul ...

  6. Jetpack的ViewModel与LiveData总结

    本文基于SDK 29 一.ViewModel与LiveData的作用: 1.viewModel: 数据共享,屏幕旋转不丢失数据,并且在Activity与Fragment之间共享数据. 2.LiveDa ...

  7. jenkins 钉钉机器人插件

    官方文档: https://jenkinsci.github.io/dingtalk-plugin/guide/getting-started.html#%E6%B3%A8%E6%84%8F 注意:系 ...

  8. map 简单梳理【GO 基础】

    〇.map 简介 map 是一种无序的基于 key-value 的数据结构,Go 语言中的 map 是引用类型,必须初始化才能使用. 其中键可以是任何类型,但值必须是可比较的类型(如整数.字符串.布尔 ...

  9. centos python3虚拟环境

    为什么需要虚拟环境? 在使用 Python 语言时,通过 pip(pip3)来安装第三方包,但是由于 pip 的特性,系统中只能安装每个包的一个版本.但是在实际项目开发中,不同项目可能需要第三方包的不 ...

  10. Mybatis分页插件有效范围

    一.问题由来 在修改了一段代码后,将修改后的功能放在测试环境简单测试后,发现没有任何问题,因为测试环境数据量非常少(10条以下),因此 也就没有怀疑修改的代码存在问题,直接上生产环境,测试的时候发现后 ...