背景

相信我们不止一次遇到过一个等待事件:LWLock lock_manager。下面我们聊聊这个等待事件的含义,产生原因,以及解决方法。

等待事件含义

当数据库维护共享锁的内存区域以在无法实现以fastpath lock 模式分配、检查和解除分配锁时,会发生此事件。发出SQL语句时,数据库会记录有关锁,以在并发操作期间保护数据库的内存结构、数据和完整性。数据库可以使用fastpath lock或非fastpath lock方式来实现这一目标。非快速路径锁比快速路径锁更昂贵,产生更多的开销。

快速路径锁定:为了减少频繁获取和释放锁,减少发生冲突的锁的开销,后端进程可以使用快速路径锁定方式。数据库将此机制用于满足以下条件的锁:VXID 锁 ;“弱”锁,不应该是(AccessShareLock、RowShareLoc或RowExclusiveLock);

lock manager 问题示例:

在本例中,一个表存储多年的数据,按天进行分区。每个分区有两个索引。当查询许多天的数据,这需要数据库读取许多分区。数据库为每个分区创建一个锁。如果分区索引是优化器访问路径的一部分,数据库也会为它们创建一个锁。

应用程序可能有数百个会话。如果并发会话在没有分区修剪(查询SQL没带分区列的条件)的情况下查询父表,数据库可能会创建数百甚至数千个非fastpath lock。通常,当此并发性高于CPU的数量时,会出现LWLock:lock_manager等待事件。

注意:LWLock:lock_manager等待事件与数据库中的分区或索引数无关。相反,它与数据库必须控制的非快速路径锁的数量有关。

等待事件LWLock:lock_manager增加的可能原因

当LWLock:lock_manager等待事件发生的频繁时,表明存在性能问题。导致出现峰值的最可能原因如下:

  1. 并发活动会话正在运行但没有使用快速路径锁的查询。
  2. 大量并发活动会话正在访问很多分区的表。每个分区都有多个索引。
  3. 数据库遇到连接风暴。默认情况下,某些应用程序或连接池软件会在数据库速度较慢时仍然创建更多连接。
  4. 大量会话查询父表而没使用分区修剪。
  5. 数据定义语言(DDL)、数据操作语言(DML)命令频繁访问或修改的热表或元组。

等待事件LWLock:lock_manager解决方法:

  1. 使用分区修剪

    SET enable_partition_pruning=on;

    当查询的WHERE子句包含用于分区的列时,查询可以利用分区修剪。

  2. 删除不必要的索引

    删除数据库未使用或很少使用的索引,特别是有大量分区的表的索引。

  3. 调整查询以实现快速路径锁定

    要查询是否使用快速路径锁定,请查询sys_locks表中的fastpath列。如果查询没有使用快速路径锁定,请将每个查询的表数减少到16个以下。

    fastpath列的含义是,如果锁通过快速路径获得则为真,通过主锁表获得则为假.

  4. 调整其他等待事件

    如果LWLock:lock_manager在top等待列表中排名第一或第二,请检查等待事件中是否也同时出现以下等待事件:

    Lock:Relation

    Lock:transactionid

    Lock:tuple

    如果前面的事件在等待事件中占比很高,请首先想办法降低这些等待事件。这些事件可能导致更多的LWLock:lock_manager。

  5. 减少硬件瓶颈

    CPU不足或网络带宽的最大使用率触发瓶颈。在这些情况下,考虑以下措施:优化消耗大量CPU和内存的sql;更改应用程序逻辑;冷热数据物理分离。

  6. 使用连接池

    如果数据库时常有大量session,请考虑使用或优化连接池。避免连接风暴。

  7. 升级数据库版本

    建议升级至KingbaseES最新发布版本

KingbaseES 等待事件之LWLock lock_manager的更多相关文章

  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. eslint+prettier 统一代码风格

    1.实现效果 Eslint校验代码语法,prettier统一格式化代码,按下保存自动修复eslint错误,自动格式化代码. 2.安装vscode插件 Vetur ESLint Prettier - C ...

  2. cookie和服务器Session的区别

    cookie和服务器Session的区别 cookie和服务器Session都可用来存储用户信息,cookie存放于客户端,Session存放于web服务器端. 因为cookie存放于客户端有可能被窃 ...

  3. 2019年在浏览器用原生js写WebGL,绘制图形;

    因为JavaScript高级程序设计(第三版)中的运行书上15.3WebGL部分的代码时在chrome和firefox浏览器下报错,在后面我网上初步找了一圈,好像没人做出真正可以用的代码;所以我就自己 ...

  4. 基于java的学生信息管理系统

    开发说明:使用数组集合存储临时数据,实现学生信息管理系统,实现的功能有管理员的注册.登陆.增加学生信息.删除学生信息.查询学生信息.修改学生信息.学生信息列表 登陆注册界面 系统首页界面 增加 删除 ...

  5. Entity Framework发布到IIS报错

    参考资料:https://www.cnblogs.com/mrma/p/5404584.html 报错信息 The Entity Framework provider type 'System.Dat ...

  6. 我的第一个项目(八):(解决问题)图片资源无法加载(Error: Cannot find module "../../xxx" )

    好家伙,问题一堆   先开一个测试页模拟游戏模块的运行 原先的图片初始化方法失效了,(vue里面自然是用不了这种方法的) function createImage(src) { let img; if ...

  7. 机器学习策略篇:详解满足和优化指标(Satisficing and optimizing metrics)

    满足和优化指标 要把顾及到的所有事情组合成单实数评估指标有时并不容易,在那些情况里,发现有时候设立满足和优化指标是很重要的,让我告诉是什么意思吧. 假设已经决定很看重猫分类器的分类准确度,这可以是\( ...

  8. CentOS系统下,配制nginx代理

    1.安装: yum install nginx 2.证书文件位置: a. 创建https证书文件夹:/etc/nginx/ssl b. 上传两个证书文件到/etc/nginx/ssl 3.在/etc/ ...

  9. 【Azure APIM】验证APIM删除后的恢复步骤

    问题描述 在Azure门户中,误删除API Management资源后,怎么办? 问题解答 遇见误删除的第一反应就是: 想恢复删除的内容,但是从门户上查看没有发现有可以操作的方面. (错误,Azure ...

  10. 【Azure 环境】微软云上主机,服务的安全更新疑问

    [问题一]微软云上的虚拟机,不论是Windows系统or Linux 系统,系统的安全补丁是由微软云平台   打上补丁进行修复,还是使用虚拟机的用户手动更新修复呢? [答]这些补丁不会由平台来直接操作 ...