前言

等待事件是排查数据库性能的指标之一。简单理解,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的更多相关文章

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

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

  2. SQL SERVER中的OLEDB等待事件

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

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

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

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

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

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

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

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

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

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

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

  8. Oracle等待事件db file parallel read

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

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

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

随机推荐

  1. SAP Tree editor(树形结构)

    SAP List Tree 效果 源代码 *&---------------------------------------------------------------------* *& ...

  2. UiPath Excel修改操作

    一.Excel 修改操作 1.删除行 (1)控件介绍 Insert/Delete Rows: 在特定位置添加或删除指定数量的行         常用属性介绍: Destination: NoRows: ...

  3. UiPath文本操作Get Full Text的介绍和使用

    一.Get Full Text操作的介绍 使用Get Full Text(获取全文本 )屏幕抓取方法从指示的UI元素中提取字符串及其信息 二.Get Full Text在UiPath中的使用 1. 打 ...

  4. NC19115 选择颜色

    NC19115 选择颜色 题目 题目描述 \(n\) 个人排成一个环形,每个人要从 \(c\) 种颜色中选择一个. 牛牛希望相邻的人选择的颜色是不同的 问有多少种方案. 输出方案数对 \(10007\ ...

  5. NC204382 中序序列

    NC204382 中序序列 题目 题目描述 给定一棵有 \(n\) 个结点的二叉树的先序遍历与后序遍历序列,求其中序遍历序列. 若某节点只有一个子结点,则此处将其看作左儿子结点 示例1 输入 5,[3 ...

  6. SpringMVC 概述

    1. SpringMVC 概述 1) Spring 为展现层提供的基于 MVC 设计理念的优秀的 Web 框架,是目前最主流的MVC 框架之一 .MVC,M:model,模型层,指的是项目中的实体Ja ...

  7. Math类和函数定义

    Math这个类是java系统内部当中的一个类,他用来提供一些基本的数学操作,他也有些工具可以给我们用比如 :abs--算绝对值   pow--算幂次   random--随机数   round--四舍 ...

  8. 攻防世界MISC—进阶区21-30

    21.easycap 得到一个pcap文件,协议分级统计,发现都是TCP协议 直接追踪tcp流,得到FLAG 22.reverseMe 得到一张镜面翻转的flag,放入PS中,图像-图像旋转-水平翻转 ...

  9. [Android开发学iOS系列] 语言篇: Swift vs Kotlin

    Swift vs Kotlin 这篇文章是想着帮助Android开发快速学习Swift编程语言用的. (因为这个文章的作者立场就是这样.) 我不想写一个非常长, 非常详尽的文章, 只是想写一个快速的版 ...

  10. centos7更改中文

    这是在CentOS7中设置,CentOS6的是在 .etc/sysconfig/i18n 配置文件下.在root用户下操作,使用 locale 命令查看语言环境,看到 LANG=en_US.utf8 ...