MySQL InnoDB 事务状态中的“清理”是什么意思以及如何防止它?

Mac*_*ros 7 mysql innodb performance performance-tuning

在我们的数据库(RDS 上的 MySQL 5.6.22)中,我们有很多事务(~500)在负载下处于“清理”状态:

> SHOW ENGINE innodb STATUS;
...
------------
TRANSACTIONS
------------
...
---TRANSACTION 70150348714, not started
MySQL thread id 132590, OS thread handle 0x2b2a712ca700, query id 10842420427 <ip> <user> cleaning up
...
Run Code Online (Sandbox Code Playgroud)

我找到的唯一信息是:

线程已经处理了一个命令并准备释放内存并重置某些状态变量。

https://dev.mysql.com/doc/refman/5.6/en/general-thread-states.html

而这个问题评论提到:

如果您经常在实例中看到这种情况,您可能需要微调一些与内存相关的参数。

许多交易陷入“清理”状态——是什么导致了这种情况?

实际问题可能是什么?为什么这么多交易处于“清理”状态?我可以微调哪些内存参数来防止它?

任何建议将不胜感激。

nas*_*off 2

引用这个人自己的话:

你好!

是的,如果您的 table_cache 太小,您可以使进程处于“清理”状态。

一般的答案是,如果状态变量“opened_tables”随着时间的推移会增加很多,那么您应该增加表缓存。

你的,蒙蒂

资料来源:Grokbase.com