KingbaseES V8R6 等待事件之CLogControlLock
前言
Kingbase数据库的tuple行头部来标识这条记录的事务结束状态(未知、已提交、已回滚),在事务提交时如果并发更新100万行记录,需要对多个page的tuple进行更改,这种繁重的操作会对数据库性能产生极大影响。KingbaseES 事务结束时,只需要修改这个事务对应的clog的日志,对page tuple状态的修改推迟到下次Select 访问的时候。clog中会记录事务状态,每个事务的状态由2个比特位来表示,CLogControlLock 等待事件指正等待读取或者更新事务状态。
clog相关的LWLOCK如下:
CLogControlLock: Waiting to read or update transaction status.
CLogTruncationLock: Waiting to truncate the write-ahead log or waiting for write-ahead log truncation to finish.
clog: Waiting for I/O on a clog (transaction status) buffer.
ClogGroupUpdate: Waiting for group leader to update transaction status at transaction end.
等待事件CLogControlLock 出现的可能原因
1、高并发的小事务频繁提交。注意,频繁小事务提交也可能引起 wal相关的等待事件。
2、遇上clog buffer不足,需要大量的clog物理文件。因为每一个事务提交都需要调用TransactionIdSetPageStatus,遇到buffer不够的情况,小事务吞吐会严重下降。
业务场景模拟:
暂时调大table1的vacuum阈值,例如调到10亿,autovacuum_freeze_max_age ,vacuum_freeze_table_age 。table1单纯多事务写入,例如10亿并发事务,每个事务写入10行记录。总共写入100亿行记录,只要不查询这个表,这些记录都是没有被设置状态标志位的。table1开启高并发读请求,读这些更新前的还没有事务标记状态的记录时,需要从CLOG获得他们的事务状态,由于clog buffer很小,默认1mb,所以clog buffer很快会被消耗掉。
在上述过程的同时,如果其他表上进行高并发写事务,就会看到等待事件CLogControlLock,原因是磁盘吞吐量都被用到clog buffer与clog日志落盘。磁盘吞吐量变小了,那么其他的业务写操作也要写入clog中事务状态就会发生锁等待。
等待事件CLogControlLock的解决方法
更改操作的相关表几乎不被查询。或者查询很少。所以大量的记录没有被设置状态标志位,当触发vacuum freeze或select全表扫描时,这时候需要读取clog,设置标志位,需要读取clog了解事物提交状态,会导致clog buffer很快被耗尽,如果同时有高并发小事务提交,需要写clog的PAGE状态,会出现锁等待。导致事务提交的吞吐下降。
尽量避免上述业务场景。避免查询到大量没有设置提交状态标志位的数据,建议不要把vacuum freeze阈值调大,因为在vacuum时,会触发读取clog设置状态标志位。也要尽量避免数据库中大量高并发小事务出现,这还会引起walsync等待事件。
KingbaseES V8R6 等待事件之CLogControlLock的更多相关文章
- 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的最前面. 当然 ...
- 【等待事件】序列等待事件总结(enq: SQ - contention、row cache lock、DFS lock handle和enq: SV - contention)
[等待事件]序列等待事件总结(enq: SQ - contention.row cache lock.DFS lock handle和enq: SV - contention) 1 BLOG文档结 ...
随机推荐
- tmpwatch命令
tmpwatch命令 tmpwatch递归删除给定时间内未访问的文件,通常用于清理用于临时存放空间的目录,并可以设置文件超期时间,默认单位以小时计算. 语法 tmpwatch [-u | -m | - ...
- idea自定义代码片段live template
1.介绍 有时在idea编辑器经常会写同一个代码块,那么这个代码块就可以利用live template功能把它定义成可根据关键字触发的代码片段,效果如下图: 2.操作步骤 此处我们就以springbo ...
- Java中的Try with Resources语句介绍
1.介绍 从Java7诞生了try-with-resources,这家伙可以在资源使用完后实现自动关闭回收.想想我们之前打开一个文件或流对象用完咋整的,是不是finally语句块中手动close的. ...
- 从零开始学Spring Boot系列-前言
从零开始学Spring Boot系列-前言 在数字化和信息化的时代,Java作为一种成熟.稳定且广泛应用的编程语言,已经成为构建企业级应用的首选.而在Java生态系统中,Spring框架无疑是其中最为 ...
- Xposed 原理
Xposed 使用替换app_process的方式(这是个二进制文件) xposed 的 app_main2.cpp中做了xposed的初始化 /** Initialize Xposed (unles ...
- git回退至指定版本,并更新远程仓库
1. git log 查到commit记录 2.复制 commit 后面的id 3. git reset --hard commit 后面的id // 回退 4. 强制更新远程仓库 git ...
- ContentType组件表使用
https://www.shuzhiduo.com/A/qVdepN2r5P/
- ubuntu16.0.4设置mysql远程访问
修改mysql的配置 1.先查看是不是已经是root用户了,不是的话切换到root用户 输入命令:sudo su 提示输入密码,这边输入你自己原来账户的密码即可 2.切换到root用户后,输入如下命令 ...
- 解析Spring中的循环依赖问题:初探三级缓存
什么是循环依赖? 这个情况很简单,即A对象依赖B对象,同时B对象也依赖A对象,让我们来简单看一下. // A依赖了B class A{ public B b; } // B依赖了A class B{ ...
- jquery实现轮播图切换
这个是我模仿网易云的音乐界面写的轮播图,主要实现的功能有 1.每隔4秒图片和对应的背景颜色一起切换 2.点击翻页会跳转到相对应的图片以及背景上 3.点击左右翻页,实现顺序切换 <1>HTM ...