如何决定是否使用InnoDB启用MySQL查询缓存

Mic*_*mza 4 mysql innodb aws amazon-rds

在仅使用 InnoDB 表的服务器上,应该如何决定启用/禁用 MySQL 查询缓存。举例来说,如果启用了缓存,那么应该如何输出:

SHOW STATUS LIKE 'Qcache%';
Run Code Online (Sandbox Code Playgroud)

做出决定的解释?或者可以执行哪些其他查询/分析来获取更多信息,然后应如何解释这些信息?如果要启用的话,它的大小应该如何确定?我在 Amazon RDS 上,使用 MySQL 5.6。我最终将拥有约 250 个独立的数据库,总空间约为 200GB。

Ric*_*mes 5

SHOW GLOBAL STATUS;

然后计算这些(无论使用 MyISAM 还是 InnoDB):

  • Qcache_lowmem_prunes / Uptime-- QC 被修剪的频率 -- 超过 15/秒表示启用 QC 会产生大量开销。
  • Qcache_not_cached / Uptime-- 缓存尝试失败(每秒)。>40 可能不好。
  • Qcache_not_cached / (Qcache_hits + Com_select + Qcache_not_cached)-- 其中SELECTs未缓存在 QC 中的百分比 -- >30% 表示 QC 不是很有用。
  • Qcache_hits / Qcache_inserts-- 命中插入比 -- > 10 为理想