首页 > 其他分享 >达梦混合操作事务阻塞排查

达梦混合操作事务阻塞排查

时间:2024-10-08 09:44:51浏览次数:7  
标签:trx dmtest 阻塞 t1 排查 sql id 达梦

在一些项目中经常有用户反馈为什么一些查询SQL会导致阻塞,在数据库中查询是不应该阻塞读写操作的,现根据下面示例模拟相关业务场景。 create table dmtest (id int, name varchar(10)); insert into dmtest values(1,'a'); insert into dmtest values(2,'b'); insert into dmtest values(3,'c'); commit; update dmtest set name='d' where id=1; select * from dmtest; 这里不要提交 打开另外一个窗口如下sql,该sql一直在执行中 delete from dmtest where id=1;  查询v$trxwait存在阻塞,事务335435被335433阻塞  SELECT * FROM V$TRXWAIT; 通过下面查询,的确可以看到有select阻塞了delete select trx_id,sql_text,sess_id,state from v$sessions where trx_id in('335435','335433'); 根据V$LOCK可以看到该事务335433有个排他锁(x),一般用于写操作,而锁粒度为事务锁(TID), 类似行锁,以防止多个事务同时修改同一行记录。前面有个数据修改并且没有提交,然后又做了查询操作,从而导致上面select阻塞了delete现象 SELECT * FROM V$LOCK where trx_id= 335433 查看该事务是否有提交 SELECT t1.sql_text, t1.state, t1.sess_id   FROM v$sessions t1, v$trx t2  WHERE t1.trx_id = t2.id AND t1.state = 'IDLE' AND t2.status = 'ACTIVE'  and t1.trx_id=335433 下面介绍两种方法来找到当前阻塞事务执行了哪些sql,定位到造成阻塞的源头 (1)通过V$SQL_HISTORY ,v$sessions 视图查询,可以看到是前面一个update没提交导致了阻塞, select listagg2(top_sql_text||char(10))  from  V$SQL_HISTORY sh,v$sessions block_sess  where sh.TRX_ID=block_sess.trx_id and sh.sess_id=block_sess.sess_id  and sh.TRX_ID=335433 注意:由于V$SQL_HISTORY只能保留10000条历史记录, 如存在长时间未提交事务或者系统业务负载高,可能查不到结果或者结果不全 (2)需要通过sql追踪日志去排查。也可以找到对应的sql 注意:需要开启sql追踪日志来监控所有的sql,在sqllog.ini 里面将MIN_EXEC_TIME改成0,如果业务负载高,会产生大量的日志文件。定位完成之后需要修改MIN_EXEC_TIME的值    

标签:trx,dmtest,阻塞,t1,排查,sql,id,达梦
From: https://www.cnblogs.com/fangzpa/p/18451054

相关文章

  • Linux运维常见故障排查和处理的技巧汇总
    常见问题解决集锦1.shell脚本不执行问题:某天研发某同事找我说帮他看看他写的shell脚本,死活不执行,报错。我看了下,脚本很简单,也没有常规性的错误,报“:badinterpreter:Nosuchfileordirectory”错。看这错,我就问他是不是在windows下编写的脚本,然后在上传到linux服务器的……......
  • 修改Nacos2.4.1源码-适配达梦数据库&麒麟ARM系统(国产XC化)
    前言:应集团公司现在推广XC化,其中基础环境需要用麒麟ARM操作系统和达梦数据库,而官网的nacos默认适配mysql,需要重新编译源码来适配需要对接的数据库,2.4.2试验了一把,安装启动后nacos控制台出现“创建命名空间失败/数据库语法问题”,经分析,问题出在源码的sql语法上,参考以下链接1。......
  • 小骨英雄杀手》游戏故障排查:steam_api64.dll文件丢失怎么办?
    面对《小骨英雄杀手》游戏中出现的“steam_api64.dll文件丢失”的故障,玩家可以采取以下措施进行排查和解决:一、确认问题原因未通过Steam启动:如果直接从游戏目录启动游戏,而非通过Steam客户端,可能会导致此问题。文件丢失或损坏:在安装过程中该文件可能未能正确复制,或者被杀毒软......
  • Idea Maven Jar版本冲突的排查与解决
    一、背景        一个庞大的JAVA工程里,往往会依赖引入同一个Jar包的多个版本,如果处理不当,则会导致项目启动失败或者运行过程中出现意想不到的问题。一个工程里Jar包版本的统一,不仅便于后续的运维维护,也有利于版本的统一升级管理,这也体现了一个工程师的技术水平和技术......
  • 如何排查系统频繁执行full GC
    前言:频繁的FullGarbageCollection(FullGC)通常表明了Java应用程序中的内存管理存在问题。这可能是由于堆内存不足、对象生命周期过长、或是内存泄漏等原因导致的。以下是一些排查系统频繁执行FullGC的方法:分析堆内存使用情况:使用JVM提供的工具如jstat或可视化工具如Vis......
  • sdram控制器设计(五)- 读操作问题排查
    实验背景在(四)中介绍了sdram读操作的实现和仿真过程,现在介绍读操作实现过程中出现的一些问题。实验内容介绍sdram控制器读模块的实现和仿真验证过程中的问题。实验步骤在(四)中,读操作的波形图如下:写数据正常,从sdram的sdram_dq(与读模块read_dq连接)端口读出的数据也是正确......
  • 关于开发板与虚拟机网络不通问题排查
    文章目录一、网络连接二、排查过程1.首先检查Windows和开发板的WIFI模块是否处于同一个局域网2.检查端口转发配置是否正确3.查看防火墙是否关闭一、网络连接开发板(客户端)---wifi模块---无线路由器---Windows主机---NAT模式---Ubuntu虚拟机(服务器)开发板通过WIF......
  • 排查maven 冲突及解决方式
    MavenMaven是一个以项目为中心的自动化构建工具,主要用于Java项目的管理和构建。它提供了一种统一的方式来描述项目的结构、依赖关系和构建过程,简化了项目的构建和管理。Maven的主要特点:项目对象模型(POM):Maven使用pom.xml文件来定义项目的依赖、插件和构建配置。POM是Maven......
  • semi-sync原主库加入集群阻塞问题分析
    问题现象客户在一个一主两从的半同步复制环境下做了手工切换,然后尝试把原主库加入集群中,结果发现新集群中的数据一直无法同步到slave(原主库)中来,查看slave(原主库)同步状态,IO线程和SQL线程都是YES状态,但是Seconds_Behind_Master大于0.查看showprocesslist状态,发现SQL线程一......
  • 排查慢收口问题及优化慢查询方法
    目录排查慢收口问题及优化慢查询方法一、开启慢SQL查询日志二、使用explain分析SQL执行计划三、利用其他监控工具在实际的线上环境中,慢收口问题是经常会碰到的。下面为大家总结了排查和优化慢查询的方法:一、开启慢SQL查询日志在数据库层面,开启慢SQL查询日......