面试题答案
一键面试查询缓存相关参数设置提高查询效率的方法
- query_cache_type
设置查询缓存类型,取值有0(OFF)、1(ON)、2(DEMAND)。若希望大部分查询走缓存,设为1;若只想让特定查询走缓存,设为2,然后在SQL语句中使用
SQL_CACHE
关键字。 - query_cache_size 指定查询缓存的大小,单位为字节。根据服务器内存情况合理设置,一般建议初始设为64M - 512M,若查询缓存命中率高,可适当增大;若命中率低,可适当减小。
- query_cache_limit 设置单个查询结果能够缓存的最大值,单位为字节。若查询结果常大于此值,会导致缓存无法命中,应根据实际查询结果大小调整,避免设得过小。
设置过程中的注意事项
- 数据更新频率 如果数据库中数据更新频繁,查询缓存可能频繁失效。因为只要表数据有更新,该表相关的所有查询缓存都会被清空。对于更新频繁的表,应谨慎开启查询缓存。
- 缓存碎片
频繁的缓存插入和删除操作可能导致缓存碎片,降低缓存利用率。可通过定期重启MySQL服务或调整
query_cache_size
来整理碎片。 - 查询复杂度 复杂查询(如包含子查询、连接多个大表等)的结果缓存可能不划算,因为缓存和验证缓存的开销可能大于直接执行查询的开销。
- 版本差异 不同MySQL版本对查询缓存的支持和实现略有不同,高版本中查询缓存甚至默认禁用,需注意参考对应版本官方文档进行设置。