今天早上我们的 aurora mysql serverless 2 出现峰值并且基本上被锁定。我们有一个写入器/读取器和一个与集群关联的读取器。
在阅读器上我们有一个强烈的选择查询。这是 RDS 显示的查询(字段名称已更改),重点是它有多个 FIND_IN_SET 函数,并且见解显示它检查了 109826.50 行。
SELECT thisstuff
( thistime
) AS thestuff
, COUNT (*) AS count
FROM mytable
WHERE todo
= ? 和someID
=?AND ( ( FIND_IN_SET
( otherID
, ?) ) || ( FIND_IN_SET
( otherID
, ?) ) || ( FIND_IN_SET
( otherID
, ?) ) ) AND (thistime
之间 ? AND ?) AND some_status
= ? 通过...分组months_todo
(thistime
)
与此同时,我们的作者正在进行以下等待。
等待/io/redo_log_flush
同步/sxlock/innodb/hash_table_locks
等待/io/table/sql/handler
有人可以帮助我理解为什么会发生这种情况,例如编写器是否锁定了表或 FIND_IN_SET 是否锁定了编写器?作者在查询进行时正在对同一个表进行更新。有办法防止这种情况吗?
谢谢