最近我的数据库每天启动好几次,在一个Waiting for table flush
状态下遇到很多查询。通常有一个很长的查询在执行,当被杀死时会解锁其他查询。我们不会自动执行ANALYZE
、OPTIMIZE
、RENAME
、ALTER
和可能导致刷新的命令REPAIR
。FLUSH
这些表都是 InnoDB,MySQL 的版本是5.7.39-1
.
一直有数百个客户端连接(在我写这个问题时有 372 个)。
数据库是托管的,所以我没有PROCESS
执行查询所需的权限
SELECT BLOCKING_TRX_ID FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS;
这可用于进一步调试问题。
你能帮我调试这个问题吗?
正如@RickJames 所建议的那样,在与提供商进一步调试问题后,我发现他们执行了一个每小时 cron 来分析每个表并且是刷新的原因。
我无法在 PROCESSLIST 中查看此查询,因为它们是使用管理帐户执行的。
谢谢大家的帮助。