MySQL 查询缓存功能是在连接器之后发生的,它的优点是效率高,如果已经有缓存则会直接返回结果。
查询缓存的缺点是失效太频繁导致缓存命中率比较低,任何更新表操作都会清空查询缓存,因此导致查询缓存非常容易失效。

MySQL 查询缓存是一项功能,用于将查询结果缓存起来,以便在后续相同的查询被执行时,可以直接从缓存中获取结果,而无需再次执行查询操作。然而,MySQL 查询缓存在实际应用中存在一些优点和缺点。

优点:

  1. 提高查询性能:对于相同的查询请求,如果查询结果已经被缓存,MySQL 可以直接从缓存中返回结果,避免了执行查询的开销,从而提高了查询性能。
  2. 降低系统负载:由于查询结果被缓存,相同的查询请求不需要再次执行查询操作,减少了对数据库的访问次数,从而降低了数据库的负载。

缺点:

  1. 高内存消耗:MySQL 查询缓存会占用大量的内存,因为它需要存储每个查询语句的结果集。如果缓存的查询结果集较大或缓存的查询语句很多,就会消耗大量的内存资源。
  2. 缓存失效频繁:一旦对缓存中的任何表进行了更新操作(如插入、更新或删除),与这些表相关的所有缓存都会被标记为无效,需要重新执行查询并更新缓存。这就导致了频繁的缓存失效,降低了缓存的效用。
  3. 不适用于动态查询:MySQL 查询缓存适用于静态查询,即查询语句和查询参数完全相同的情况。如果查询语句中包含了变量、函数或用户自定义函数等动态元素,缓存将无法命中,无法利用查询缓存的优势。

由于上述缺点的存在,自MySQL 5.7.20版本开始,查询缓存功能已被废弃,并在MySQL 8.0版本中完全移除。这是因为查询缓存的实际效果往往不如预期,并且可能带来性能问题和内存管理方面的挑战。取而代之的是,MySQL 提供了更加灵活和可控的查询缓存替代方案,如使用合适的索引、优化查询语句、使用查询结果集缓存等。