1.查看被锁表

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

show full processlist 

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

2.查看被锁的表

show OPEN TABLES where In_use > 0;

  

3.杀死被锁进程

kill 4361901

  

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

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

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

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

 

相关文章:

  • 2022-12-23
  • 2022-01-06
  • 2022-12-23
  • 2021-12-31
  • 2022-12-23
  • 2022-03-08
  • 2021-06-14
  • 2021-12-21
猜你喜欢
  • 2021-08-13
  • 2021-07-05
  • 2021-06-30
  • 2022-12-23
  • 2022-12-23
  • 2022-02-02
相关资源
相似解决方案