为什么MySQL table_cache已满,但从未使用过

我一直在使用tuning-primer.sh脚本来调整我的my.cnf设置。 我的大部分工作都运行良好,但关于TABLE CACHE的部分没有意义:

TABLE CACHE当前table_cache值= 900个表。

你总共有0个表你有900个开放表。

当前table_cache命中率为1%,而表caching的100%正在使用中。

你应该增加你的table_cache

当我做SHOW STATUS时 我得到以下表格相关的数字:

Open_tables = 900

Opened_tables = 0

好像有什么问题。 我有一些额外的内存可以用来增加table_cache的大小,但是我的感觉是已经可用的900个表没有做任何事情,增加它只会浪费更多的能量。

为什么会发生这种情况? 是否有其他设置,可能会导致所有我的table_cache插槽使用即使没有命中给他们?

我有150个最大连接,每个连接可能不超过4个表,FWIW。

这里是我也一直在调整的临时表的debugging器脚本输出:

温度表

当前max_heap_table_size = 90 M

当前tmp_table_size = 90 M

在11032358个临时表中,有40%是在磁盘上创build的

也许你应该增加你的tmp_table_size和/或max_heap_table_size来减less基于磁盘的临时表的数量。

注意! 内存表中不允许使用BLOB和TEXT列。

如果使用这些列提高这些值可能不会影响磁盘临时表的比例。

TABLE CACHE当前table_cache值= 900个表,这将是所有150个连接的总数。 如果我记得好,每个连接使用他自己的table_cache