SQL [na]; nested exception is org.hibernate.PessimisticLockException: could not execute statement
作者:mmseoamin日期:2024-01-19

问题原因

could not execute statement;

SQL [n/a]; nested exception is org.hibernate.PessimisticLockException: could not execute statement

出现此问题的原因是 PessimisticLockException 查询部分资料后解释说,这是由于事务等待超时,或者一个事务等待另一个事务释放锁,但时间过长导致事务无法提交,而事务内的 sql 也就无法执行,抛出此问题

排查途径

  1. 检查接口内部存在事务的方法内,是否某一方法或者某些方法调用时间过长,导致接口超时,可能网络或者硬件条件等较差,或被某些特定场景导致返回时间过长。
  2. 检查被置于事务内的代码是否由于形成了大事务而过于耗时。
  3. 查询数据库类语句是否可以移除到事务外。减少事务内操作。

可以参考一下文章排查:

  1. 大事务出现原因以及解决方式学习总结 以及编程式事务和声名式事务
  2. Spring 事务失效的十二种场景,以及事务传播机制特性 学习总结