莫大人

数据库锁表导致连接池满问题

1.查看被锁表

并发时,操作了同一笔数据,导致锁表。在业务层面添加并发锁,避免这种情况。

show full processlist 

  

2.查看被锁的表

show OPEN TABLES where In_use > 0;

  

3.杀死被锁进程

kill 4361901

  

 4.为什么会出现锁表问题,怎么预防

业务场景:在合同签发流程中,业务流程比较长包含 参数校验,调用第三方合同签发,调用上传阿里OSS,重写PDF,调用回调通知业务方,保存相关业务数据,所有的业务操作都在同一个事务处理中。

这里任何一个环节出现hold住的情况都有可能导致连接不释放的问题,特别是调用第三方服务时。

处理:事务尽可能的短,事务只做单纯的数据库存储,修改逻辑,调用第三方及其他业务放在事务外处理。

 

posted on 2019-03-12 17:35  莫大人  阅读(1184)  评论(0编辑  收藏  举报

导航