我一直在使用 tuning-primer.sh 脚本来调整我的 my.cnf 设置。大多数东西都运行良好,但关于 TABLE CACHE 的部分却毫无意义:
表缓存当前 table_cache 值 = 900 个表。
您总共有 0 张桌子 您已打开 900 张桌子。
当前 table_cache 命中率为 1%,而您的表缓存已 100% 被使用。
你可能应该增加你的table_cache
当我执行 SHOW STATUS; 时,我得到了以下与表相关的数字:
打开表 = 900
打开的表 = 0
似乎出了点问题。我有一些额外的内存可以用来增加 table_cache 的大小,但我的感觉是,已经可用的 900 个表没有任何作用,增加它只会浪费更多的能量。
为什么会发生这种情况?是否有其他设置可能导致我的所有 table_cache 槽都被使用,即使它们没有命中?
我最多有 150 个连接,并且每个连接可能不超过 4 个表,仅供参考。
以下是临时表的调整器脚本输出,我也一直在调整它:
临时表
当前 max_heap_table_size = 90 M
当前 tmp_table_size = 90 M
在 11032358 个临时表中,40% 是在磁盘上创建的
也许您应该增加 tmp_table_size 和/或 max_heap_table_size 以减少基于磁盘的临时表的数量。
注意!内存表中不允许存在 BLOB 和 TEXT 列。
如果您使用这些列,提高这些值可能不会影响磁盘临时表的比例。
答案1
表缓存当前 table_cache 值 = 900 个表,这将是您所有 150 个连接的总数。如果我没记错的话,每个连接都使用自己的 table_cache