首页 > 其他分享 >KingbaseESV8R6等待事件之lwlock buffer_content

KingbaseESV8R6等待事件之lwlock buffer_content

时间:2022-09-03 10:11:24浏览次数:65  
标签:KingbaseESV8R6 buffer 数据库 content time 等待 cpu

前言

等待事件是排查数据库性能的指标之一。简单理解,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,buffer,数据库,content,time,等待,cpu
From: https://www.cnblogs.com/kingbase/p/16652054.html

相关文章

  • 【转载】aio系列文档(2)----图解bytebuffer
    aio系列文档(2)----图解bytebuffer 收藏原作者: talent-tan因何而写网上关于bytebuffer的文章真的很多,为何在此还要写一篇呢?主要是基于以下几点考虑很多人......
  • Content-type的几种常见类型
    原文地址  https://www.cnblogs.com/mzhaox/p/11263946.html1、application/x-www-form-urlencoded  1)浏览器的原生form表单  2)提交的数据按照key1=val1&key2=v......
  • Content-type常见类型
    一、content-type是什么?为什么?干什么?Content-type是Http的实体首部字段,在request的请求行(或response的状态码)之后,也是首部的一部分。用于说明请求或返回的消息主体是用何......
  • Java常用类之StringBuffer、StringBuilder类
    由于String的特性:内容一旦声明则不可改变,如果要改变,改变的肯定是String的引用地址。那么如果一个字符串要经常改变,此时使用String就不太合适,从而使用StringBuffer或StringB......
  • The Economist posts each week's new content online at approximately 21:00 Thursd
    EachofTheEconomistissues'officialdaterangeisfromSaturdaytothefollowingFriday.TheEconomistpostseachweek'snewcontentonlineatapproximatel......
  • innodb buffer pool简介
    一、InnodbBufferPool简介BufferPool是Innodb内存中的的一块占比较大的区域,用来缓存表和索引数据。众所周知,从内存访问会比从磁盘访问快很多。为了提高数据的读取速......
  • MySQL十六:36张图理解Buffer Pool
    转载~在应用系统中,我们为加速数据访问,会把高频的数据放在「缓存」(Redis、MongoDB)里,减轻数据库的压力。在操作系统中,为了减少磁盘IO,引入了「缓冲池」(bufferpool)机制......
  • MySQL十七:Change Buffer
    转载~在之前的文章《InnoDB的存储结构》介绍的InnoDB的存储结构的组成中,我们知道ChangeBuffer也是用InnoDB内存结构的组成部分。ChangeBuffer主要是为了在写入是减少......
  • axios的content-type是自动设置的
    一. axios参数的传递方式  首先我们要知道 参数传递一般有两种,一种是使用 params,另一种是 data的方式,有很多的时候我们看到的前端代码是这样的。 1.......
  • KingbaseESV8R6临时表和全局临时表
    临时表概述临时表用于存放只存在于事务或会话期间的数据。临时表中的数据对会话是私有的,每个会话只能看到和修改自己会话的数据。您可以创建全局(global)临时表或本地(local......