SpringJPA + Hibernate应用程序导致MySQL死锁问题

yeotifhr  于 2023-11-21  发布在  Spring
关注(0)|答案(1)|浏览(134)

我们正面临着一个问题,这可能是由于AWS RDS上的资源耗尽造成的。当我们检查AWS RDS性能洞察时,我们得到了几个具有非常高延迟(甚至超过1小时)的SQL。

SELECT
  r.trx_id waiting_trx_id,
  r.trx_mysql_thread_id waiting_thread,
  r.trx_query waiting_query,
  b.trx_id blocking_trx_id,
  b.trx_mysql_thread_id blocking_thread,
  b.trx_query blocking_query
FROM information_schema.innodb_lock_waits w
INNER JOIN information_schema.innodb_trx b
  ON b.trx_id = w.blocking_trx_id
INNER JOIN information_schema.innodb_trx r
  ON r.trx_id = w.requesting_trx_id;

字符串
我们发现它可能是由死锁引起的,发现一些类似于

select *** from table where id = *** for update


这一个被
第一个月
并且该更新查询被具有相同ID的另一更新查询阻塞。
当我们检查源代码时,没有定义像我们使用selectfor update**语句。
有什么建议我们可以进行下一步调查吗?

j9per5c4

j9per5c41#

  • 使用slowlog查找需要很长时间的查询。
  • 使用SHOW ENGINE=INNODB STATUS;查看最新的死锁(如果它确实死锁)。

将结果与SHOW CREATE TABLE一起给出,然后我们可以进一步讨论。

相关问题