达梦数据库commit阻塞

周一早上过来正常测试项目的时候,发现上周已经调好的一个接口,莫名其妙的出现了问题,具体表现就是接口内部的方法都已经执行完毕了,但是接口任然处于sending request的状态,看了下程序,没有设置断点,控制台也没有相关报错。
在这里插入图片描述
就开始排错,首先在方法内部设置断点,发现每次都是执行到sql语句的时候阻塞,把sql复制出来粘贴到数据库中执行一下,能做出运行,没有问题,就怀疑是否是有人对数据库进行了更新操作,但没有及时提交导致数据库被锁,使用select * from v$sessions where trx_id in (select trx_id from V$LOCK);查询了一下数据库中的锁,可以看到没有出现我们预想中的被上锁的更新语句,排除这个原因。
在这里插入图片描述
后来又在数据库中操作了几次,发现,如果单独执行更新操作,是没有问题的,但如果在更新操作执行后再继续执行commit操作,那么commit就会进入阻塞状态,如图,可以看到insert语句是执行成功的,但是commit语句就一直处于阻塞状态,无法结束,发现这个问题就能解释为什么程序中代码会一直卡在执行sql那一步了,后端框架不管是hibernate还是mybatis在执行sql后都会有默认的commit操作,就是这一步导致了这个bug。在这里插入图片描述
既然是commit的问题,那么就进入服务器查看一下commit的log日志,日志中也没有报错,但是有个问题就是日志中最新的记录是早上的,然后我们下午一直在进行相关测试,难不成最新记录一条都没写入log日志么?
使用df -h命令查看一下磁盘使用率,果然,磁盘的使用率已经满了,删除部分之前的log日志,在进行测试,成功解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值