技术社群的这篇文章《第12问:Table cache 有什么作用?》讲解了和table cache知识相关的实验,学习了解下。
相关历史文章,《小白学习MySQL - table_open_cache的作用》。
实验
我们先创建一个测试数据库,








可以看到开始命中 table cache 了。在 strace 的输出中,也没有抓到新的文件操作。
可以看出 table cache 的作用,就是节约读取表结构文件的开销。
我们开一个新的会话,这里增加了一个标识来区分会话,


💡运维建议: 我们读一下 MySQL 的文档,关于 table_open_cache 的建议值公式: 建议值 = 最大并发数 * join 语句涉及的表的最大个数。 通过实验我们容易理解:table_cache 是针对于线程的,所以需要最大并发数个缓存。 另外,一个语句 join 涉及的表,需要同时在缓存中存在。所以最小的缓存大小,等于语句 join 涉及的表的最大个数。 将这两个数相乘,就得到了 MySQL 的建议值公式。
如果您认为这篇文章有些帮助,还请不吝点下文章末尾的"点赞"和"在看",或者直接转发pyq,

文章转载自bisal的个人杂货铺,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




