KingbaseESV8R6等待事件之lwlock buffer_content
前言
等待事件是排查数据库性能的指标之一。简单理解,cpu在处理业务时由于业务逻辑,和不可避免的数据库其他原因造成的前台进程等待,这里的等待事件包含buffer类,io类,以及网络类等等,当我们遇到等待事件,这往往说明数据库性能存在问题,当然也要通过KWR报告去分析,等待事件占用DBtime的时间占比。这样能大概得出数据库整体运行状况。我们希望cpu在处理sql花费时间都用在数据库时间上,而当cpu花费了一部分时间在等待事件上,这样就对sql处理效率大打折扣。
记住这个公式:cpu time+前台进程非空闲等待=DB time。
elapsed time(自然逝去时间,也就是快照间隔)*逻辑cpu核数>db time ,如果elapsed time远远大于db time 说明数据库性能良好。反之,需要注意了,数据库负载过大。
也就是说cpu花费在数据库上的时间= DB time/(elapsed time逻辑cpu核数 )100%。这不包括后台进程花费的时间。这样判断数据库整体负载。
等待事件含义
buffer_content
lwlock:buffer_content当一个会话正在等待读取或写入内存中的数据页而另一个会话锁定该页以进行写入时,会发生该事件。
发生场景:300并发单条insert 。
实际上这是一个轻量级的内存锁,他保证了内存中数据的完整性,我理解,可能类似于oracle中的buffer pin锁。
为了读取或操作数据,数据库通过共享内存缓冲区访问它。要从缓冲区读取,进程在共享模式下获取缓冲区内容上的轻量级锁 (LWLock)。要写入缓冲区,它会在独占模式下获得该锁。共享锁允许其他进程同时获取该内容的共享锁。排他锁可防止其他进程获得任何类型的锁。
( lwlock:buffer_content)BufferContent事件表明多个进程正在尝试获取特定缓冲区内容的锁。
分析等待事件增加的原因
1.增加对相同数据的并发更新
更新 the same buffer content内容的查询的并发会话数可能会增加。这种争用在具有大量索引的表上更为明显。
2.工作负载数据不在内存中
当活动工作负载正在处理的数据不在内存中时,这些等待事件可能会增加。这种效果是因为持有锁的进程在执行磁盘 I/O 操作时可能保持锁持续更长时间。
3.过度使用外键约束
外键约束会增加进程持有缓冲区内容锁的时间。这种影响是因为读取操作在更新外键时,在外键上需要获取一个 shared buffer content lock 。
解决
1.提高内存效率
为了增加活动业务数据在内存中的可能性,比如根据服务器可用内存增加shared_buffer大小。表太大则进行分区表规划。
2.减少外键约束的使用
对于大量lwlock:buffer_content( BufferContent) 等待事件以使用外键约束的工作负载。删除不必要的外键约束。
3.删除未使用的索引
对于大量lwlock:buffer_content( BufferContent) 等待事件的工作负载,未使用的索引并将其删除。而且索引也是需要维护,占用磁盘空间。
KingbaseESV8R6等待事件之lwlock buffer_content的更多相关文章
- 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的最前面. 当然 ...
随机推荐
- CAP:多重注意力机制,有趣的细粒度分类方案 | AAAI 2021
论文提出细粒度分类解决方案CAP,通过上下文感知的注意力机制来帮助模型发现细微的特征变化.除了像素级别的注意力机制,还有区域级别的注意力机制以及局部特征编码方法,与以往的视觉方案很不同,值得一看 来源 ...
- VisionPro · C# · 图像显示十字光标
程序通过 CogRecordDisplay 显示控件显示视觉运行结果图像,当我们对调试时,可能需要用到图像中心十字对位光标. 本文通过VisionPro两个拟合线工具,一个拟合圆工具在图像中画出光标, ...
- 常见的git命令和git->github错误
相关命令 git remote git remote add origin xxx (xxx为仓库链接) 给这个链接取一个名字,为origin git pull git pull <远程主机名& ...
- CF333E Summer Earnings
CF333E Summer Earnings 题目 https://codeforces.com/problemset/problem/333/E 题解 思路 知识点:枚举,图论,位运算. 题目要求从 ...
- (数据库提权——Redis)Redis未授权访问漏洞总结
一.介绍 1.Redis数据库 Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key- ...
- JDBCTools 第一个版本
JDBCToolV1: package com.dgd.test; import com.alibaba.druid.pool.DruidDataSourceFactory; import javax ...
- 类似Tower的而故事还没结束
我对于SaaS一种有一种英雄主义的情怀在里面,无论是早期的推事本,还是后面我去调研的麦客CRM,国内的SaaS都在努力生长,在后疫情时代剩下的都是平台级的钉钉.飞书,或者垂直领域的王炸app了. 我早 ...
- C#实现FFT(递归法)
C#实现FFT(递归法) 1. C#实现复数类 我们在进行信号分析的时候,难免会使用到复数.但是遗憾的是,C#没有自带的复数类,以下提供了一种复数类的构建方法. 复数相比于实数,可以理解为一个二维数, ...
- 常用类-Java比较器
一.Comparable接口 Java中的对象,正常情况只能进行比较 == 或 !=不能使用 > 或 < 的,但是在实际开发中有需要进行对象的比较 comparable接口的使用举例: 1 ...
- 新版recon-ng安装模块
表现:进入后报[*] No modules enabled/installed. 1.直接在recon-ng控制台输入marketplace install all,用来下载所有插件,如果不可以,往下 ...