KingbaseESV8R6等待事件之LWLock buffer_mapping
等待事件含义
当会话将数据块与共享缓冲池中的缓冲区关联时,会发生此等待事件。
类似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的更多相关文章
- KingbaseESV8R6等待事件之lwlock buffer_content
前言 等待事件是排查数据库性能的指标之一.简单理解,cpu在处理业务时由于业务逻辑,和不可避免的数据库其他原因造成的前台进程等待,这里的等待事件包含buffer类,io类,以及网络类等等,当我们遇到等 ...
- Oracle Tuning 基础概述01 - Oracle 常见等待事件
对Oracle数据库整体性能的优化,首先要关注的是在有性能问题时数据库排名前几位等待事件是哪些.Oracle等待事件众多,随着版本的升级,数量还在不断增加,可以通过v$event_name查到当前数据 ...
- SQL SERVER中的OLEDB等待事件
OLEDB等待事件介绍 OLEDB等待类型是SQL SERVER 数据库中最常见的几种等待类型之一.它意味着某个会话(SPID)通过SQL Server Native Client OLEDB Pro ...
- ORACLE等待事件:enq: TX - row lock contention
enq: TX - row lock contention等待事件,这个是数据库里面一个比较常见的等待事件.enq是enqueue的缩写,它是一种保护共享资源的锁定机制,一个排队机制,先进先出(FIF ...
- ORACLE等待事件: log file parallel write
log file parallel write概念介绍 log file parallel write 事件是LGWR进程专属的等待事件,发生在LGWR将日志缓冲区(log_buffer)中的重做日志 ...
- 数据库服务器CPU持续百分之百、部分Session一直处于执行状态---等待事件为:asynch descriptor resize(Oracle Bug )
问题描述: 项目反馈数据库服务器的CPU持续100%的情况,跟踪发现很多活动会话的等待事件是“asynch descriptor resize”,并且这些会话一直处于Active状态,而这些会话执行的 ...
- DB SQL Monitor 阻塞及等待事件监控工具
SQL Monitor Designed By zhaoguan wang 说明------------------------------------------------------------ ...
- truncate表hang住(等待时间较长),出现enq:RO fast object reuse等待事件
有一个应用truncate表等待了一晚上,一个定时任务,跑了几年了,今天早上来发现昨晚没有执行完成,hang住了,查询发现等待事件 fast object reuse. 10.2.0.4的库 Bug ...
- Oracle等待事件db file parallel read
SQL> select event#,name,parameter1,parameter2,parameter3 from v$event_name where name = 'db file ...
- Oracle常见的几种等待事件
1. CPU time CPU time其实不是真正的等待事件.是衡量CPU是否瓶颈的一个重要指标.一般来讲,一个良好的系统,CPU TIME 应该排在TOP 5 TIME Event的最前面. 当然 ...
随机推荐
- java打印杨辉三角
package com.dylan.practice.interview; /** * 打印杨辉三角 * * 原理 * 1.每个数等于它上方两数之和 * 2.第n行的数字有n个 * * @author ...
- 石子合并(区间dp+记忆化搜索)
经典例题:石子合并 题目链接 N 堆石子排成一行,现要将石子有次序地合并成一堆,规定每次只能选相邻的2堆合并成新的一堆,并将新的一堆的石子数,记为该次合并的得分.计算合并最小得分. 方法一.区间dp ...
- 常用JDBC连接池
如下整理常用JDBC连接池组件. HikariCP 针对不同的JDK需要引入对应的HikariCP,详见:Github项目地址 . 以JDK8为例子,在项目中引入如下依赖: <dependenc ...
- 2021-09-15 JavaScript中强制将某个未知类型变量转成基础数据类型
为什么要强制将某个未知类型变量转成基础数据类型? 实际业务场景里,一个变量的数据是否合法或符合预期,会影响到自己的代码的可靠性.比如在别人使用自己写的自定义函数,而自己写的函数中的一些值是需要对入参严 ...
- 使用俩个链接在一起的容器运行wordpress
# 问题,如何分离mysql和wordpress,使它们每个都单独运行一个容器. # 解决办法:运行时通过--link选项使它们链接在一起 --link <container_name>: ...
- Flask AttributeError 'Request' object has no attribute 'is_xhr'解决办法
flask版本0.12.5 运行时会报以上错误,原因是因为werkzeug的版本大于等于1.x版本. 解决办法,降低werkzeug的版本即可 pip uninstall Werkzeug pip i ...
- SDWebImage从小白到大师蜕变
简介 SDWebImage提供的简洁的获取远程URL图片的API:平时开发中使用最多场景就是列表中的cell中要显示远程图片的需求,在具体的实现中要避免加载图片造成的界面卡顿,列表卡顿等现象的出现:所 ...
- 【Azure 应用服务】Python Function App重新部署后,出现 Azure Functions runtime is unreachable 错误
问题描述 Python Function App重新部署后,出现 Azure Functions runtime is unreachable 错误 问题解答 在Function App的门户页面中, ...
- 图像识别算法--VGG16
前言:人类科技就是不断烧开水(发电).丢石头(航天等).深度学习就是一个不断解方程的过程(参数量格外大的方程) 本文内容: 1.介绍VGG16基本原理 2.VGG16 pytorch复现 图像识别算法 ...
- Netty笔记(4) - 对Http和WebSocket的支持、心跳检测机制
对HTTP的支持 服务端代码: 向 PipeLine中 注册 HttpServerCodec Http协议的编码解码一体的Handler 处理Http请求 封装Http响应 public class ...