1. show variables like '%query_cache_type%' -- 默认关闭
    2. show variables like '%query_cache_size%' --默认值 1M
    3. SET GLOBAL query_cache_type = 1; --会报错
    4. # query_cache_type 只能配置在 my.cnf 文件中,这大大限制了 qc 的作用 在生产环境建议不开启,除非经常有 sql 完全一模一样的查询

    image.png
    QC 严格要求 2 次 SQL 请求要完全一样,包括 SQL 语句,连接的数据库、协议 版本、字符集等因素都会影响
    从 8.0 开始,MySQL 不再使用查询缓存,那么放弃它的原因是什么呢?MySQL查询缓存是查询结果缓存。它将以SEL开头的查询与哈希表进行比较, 如果匹配,则返回上一次查询的结果。进行匹配时,查询必须逐字节匹配,例如 SELECT FROM e1; 不等于 select from e1;,此外,一些不确定的查询结果无法被缓存,任何对表的修改都会导致这些表的所有缓存无效。因此,适用于查询缓存的最理想的方案是只读,特别是需要检查数百万行后仅返回数行的复杂查询。 如果你的查询符合这样一个特点,开启查询缓存会提升你的查询性能。 随着技术的进步,经过时间的考验,MySQL 的工程团队发现启用缓存的好处 并不多。
    首先,查询缓存的效果取决于缓存的命中率,只有命中缓存的查询效果才能 有改善,因此无法预测其性能。
    其次,查询缓存的另一个大问题是它受到单个互斥锁的保护。在具有多个内 核的服务器上,大量查询会导致大量的互斥锁争用。 通过基准测试发现,大多数工作负载最好禁用查询缓存(5.6 的默认设置): 按照官方所说的:造成的问题比它解决问题要多的多, 弊大于利就直接砍掉了