首页 > 其他分享 >KingbaseES V8R6等待事件之 lwlock: CSNLogControlLock

KingbaseES V8R6等待事件之 lwlock: CSNLogControlLock

时间:2024-07-26 11:10:21浏览次数:10  
标签:事务 CSN V8R6 KingbaseES CSNLogControlLock 事件 sql 等待

一、原理

CSN日志是数据库中用于记录事务提交顺序和事务状态的重要日志,为了解决高并发场景下获取快照时的性能瓶颈,引入CSN机制。CSN机制通过为每个非只读事务分配一个XID(事务号),并在事务提交时推进CSN,同时保存CSN与XID的映射关系在CSNLog中。
CSNLogControlLock等待事件通常表示某会话需要读取或写入某个事务的CSNlog时,首先需要获取这个LWLOCK锁,即同一时间只允许一个事务访问CSNLOG,通过这种锁机制,数据库能够确保在并发环境中对CSNLOG的一致而不会出现访问冲突,那么其他事务可能会遇到CSNLogControlLock等待事件。
对于确保数据库的一致性和可恢复性至关重要。总而言之,CSNLogControlLock等待事件通常表示某个会话正在等待获取对CSN日志的访问权限。

查看等待事件的语句:

select wait_event ,datname,pid,state,query,wait_event_type, count(*) from sys_stat_activity group by wait_event,wait_event_type,datname,query, pid,state order by count(*);

二、发生原因

CSNLogControlLock等待事件的发生可能由以下原因引起:
高并发事务:当数据库中存在大量并发执行的事务时,对CSN日志的访问竞争会加剧,导致某些会话需要等待其他会话释放对CSN日志的锁。
长时间运行的事务:某些长时间运行的事务可能会持续持有对CSN日志的锁,导致其他需要访问CSN日志的会话被阻塞,长事务可能由慢sql引起。
资源争用:除了对CSN日志的访问竞争外,其他资源(如CPU、内存、磁盘I/O等)的争用也可能导致CSNLogControlLock等待事件的发生。

三、解决方法

针对CSNLogControlLock等待事件,可以采取以下解决方法:
优化sql,降低并发度:通过优化慢sql,降低事务的复杂度和并发度方式降低等待事件出现概率,通过连接池管理减少长时间运行的事务等方式来优化事务的执行时间,从而减少对CSN日志的访问竞争。
监控和诊断:使用数据库管理系统提供的监控和诊断工具(如KWR,KDDM报告)来监控CSNLogControlLock等待事件的情况,并通过分析相关数据和日志来确定问题的根本原因。
升级硬件:如果资源争用是导致CSNLogControlLock等待事件的主要原因之一,可以考虑升级硬件(如增加CPU核数、扩大内存容量、提高磁盘I/O性能等)来提高数据库的整体性能。

四、具体案例

某保险用户数据库管理系统在运行过程中出现了大量CSNLogControlLock等待事件,并且该等待事件持续存在时间较长,导致应用运行缓慢,卡顿。
据了解,有关sql单独执行不慢,但在程序里执行很慢。由于业务系统复杂度特性,往往一段时间内集成了大量复杂sql,当这些sql同时运行往往会发生更为复杂的情况,例如业务的逻辑,并发度设置不合理,我们会发现常见的数据库等待事件,
然而等待事件恰恰保证数据一致性等数据安全特性而实现的应用效率最大化的功能,方便排查数据库整体性能状况。
根据等待事件原理,经过分析发现,该等待事件主要由高并发事务和慢sql引起,现场不方便开启收集kwr报告功能,我们只能从监控中看到慢sql最快执行时间5秒,最慢一小时之多。
根据等待事件原理解决此问题的方法是,降低应用并发,优化慢sql以便提高sql执行效率,此后应用反馈正常,未发生异常等待。
通过以上措施的实施,CSNLogControlLock等待事件得到了有效的缓解,数据库的性能得到了显著提升。
建议:
根据业务系统实时变更这个特性,需要实时监控慢sql。
强烈建议开启kwr报告,以便出现等待事件等问题时可以通过收集间隔快照方式详细分析应用卡顿原因。

五、总结

CSNLogControlLock等待事件是数据库管理系统中常见的性能问题之一。通过优化sql,事务执行时间、监控和诊断以及升级硬件等措施可以有效地解决该问题并提高数据库的性能。在实际应用中,需要根据具体的业务场景和性能需求来选择合适的解决方法。

标签:事务,CSN,V8R6,KingbaseES,CSNLogControlLock,事件,sql,等待
From: https://www.cnblogs.com/kingbase/p/18280397

相关文章

  • KingbaseES V8R6等待事件之 lock: transactionid
    等待事件含义Lock:在数据库管理系统中,锁是用来确保数据完整性和一致性的重要机制。当一个事务需要修改数据时,它会请求一个锁来防止其他事务同时修改相同的数据,从而导致数据不一致。transactionid:这通常是一个唯一标识符,用于区分和跟踪数据库中的不同事务。每个事务都有一个唯一的......
  • KingbaseES 更改 WAL 日志文件大小
    一、引言WAL日志的目的:WAL(Write-AheadLogging)是KingbaseES数据库中的一个关键特性,用于确保在数据库崩溃或故障后能够恢复数据。WAL日志记录了数据库的所有更改,这样即使数据库突然宕机,也可以从WAL文件中恢复数据到一致性状态。命令的功能:sys_resetwal命令用于重置WAL日志,它可以......
  • KingbaseES 数据库无响应问题分析
    一、背景及理论阐述某项目数据库系统是集群环境,主库业务卡顿,应用反馈部分业务无法正常进行。在操作系统中,物理内存(RAM)是有限的资源,当内存需求超过物理内存的容量时,操作系统会使用页面调度机制来管理内存资源。页面调度涉及将不常用的内存页面(Page)移到磁盘上的交换空间(SwapSpace......
  • KingbaseES 对象状态规则总结
    KingbaseES的PLSQL对象包括函数、存储过程、触发器、包、包体、对象类型、对象类型体和匿名块,其中匿名块即用即销,不具有状态属性,SQL中存在依赖的常见对象是表,视图,索引,自定义类型,自定义操作符等等。在使用编码过程会存在相互引用和被引用,就会导致对象的增删改无法“顺利”进行,本文......
  • KingbaseES 自定义操作符使用示例
    本文详细介绍了KingbaseES中在兼容适配过程中,当遇到不支持的操作符,如何通过自定义方式解决兼容适配问题。Kingbase自定义操作符语法和用例如下:用例数据:createtabledemo(idnumeric(10,5));insertintodemovalues(1.1);insertintodemovalues(0);insertintodemoval......
  • KingbaseES 集群运维典型案例 03 --“双主” sys_rewind恢复机制
    案例说明:主库主机系统重启,触发failover切换,原主库系统启动后,数据库服务被启动,出现“双主”,使用“repmgrnoderejoin--force-rewind”恢复集群。通过本案例了解,集群“双主”产生的原因及解决方案,并熟悉sys_rewind在集群恢复中的应用。数据库版本:KingbaseESV8R6一、集群架构......
  • UOS系统部署KingbaseES V8R6 java故障“InvocationTargetException”
    案例说明:在UOS系统下部署KingbaseESV8R6数据库时,出现Java错误,部署失败。系统版本:kingbase@srv01:~$cat/etc/os-releasePRETTY_NAME="UnionTechOSServer20"NAME="UnionTechOSServer20"VERSION_ID="20"VERSION="20"ID=UOSHOME_URL="h......
  • KingbaseES V8R3集群运维案例之---OpenEuler系统kingbasecluster无法启动
    案例说明:OpenEuler系统环境,KingbaseESV8R3集群无法启动kingbasecluster服务,经过检查发现,在通过脚本启动kingbasecluster检测网关(ping网关)时,系统返回中文提示,导致脚本检测网关联通失败,kingbasecluster服务启动失败。适用版本:KingbaseESV8R3操作系统:openEuler22.03LTS-......
  • DataX二次开发详解-Kingbasees86Reader、Kingbasees86Writer插件
     一、前提国产数据库的崛起元年,不得不提人大金仓(Kingbase)、南大通用数据库(Gbase)、达梦数据库(DM)、华为数据库(GaussDB)、阿里数据库(Oceanbase)等,此文章介绍采用datax作为同步人大金仓Kingbase86数据库的工具。目前github上的datax版本功能仅支持Kingbase82系列产品。而项目上如果要......
  • KingbaseES V8R3备份恢复案例---sys_rman_v6执行物理备份
    案例说明:在KingbaseESV8R3的最新版本中使用了sys_rman_v6执行备份,本案例介绍如何使用sys_rman_v6执行物理备份。适用版本:KingbaseESV8R3系统架构:test=#showpool_nodes;node_id|hostname|port|status|lb_weight|role|select_cnt|load_balance_n......