MySQL的Query Cache功能在较新版本中已经被移除,但从MySQL 5.7及更早版本来看,它曾用于缓存SELECT查询的结果以提升读取性能。如果你使用的是MySQL 5.7或之前版本,并希望启用Query Cache,可以按照以下步骤操作。
检查是否支持Query Cache
并非所有MySQL编译版本都默认开启Query Cache。可以通过以下命令查看当前服务器是否支持:SHOW VARIABLES LIKE 'have_query_cache';
如果返回值为YES,则表示支持Query Cache。启用并配置Query Cache
Query Cache需要在MySQL配置文件中手动启用。修改my.cnf(Linux)或my.ini(Windows)文件,在[mysqld]部分添加或调整以下参数: query_cache_type = ON:启用查询缓存。可选值有: 0 或 OFF:关闭缓存 1 或 ON:开启缓存,除非使用SQL_NO_CACHE 2 或 DEMAND:仅对带有SQL_CACHE的SELECT语句进行缓存 query_cache_size = 64M:设置分配给Query Cache的内存大小。建议从16MB到256MB之间根据实际负载调整。设为0则禁用缓存。 query_cache_limit = 2M:限制单个查询结果可缓存的最大大小,防止大结果集占用过多空间。 query_cache_min_res_unit = 4k:每个缓存块的最小内存单元,适当调整可减少内存碎片。 示例配置:
[mysqld]
query_cache_type = ON
query_cache_size = 64M
query_cache_limit = 2M
query_cache_min_res_unit = 4k
重启MySQL服务并验证状态
保存配置文件后,重启MySQL服务使更改生效:sudo systemctl restart mysql
登录MySQL后运行以下命令确认Query Cache已启用:SHOW VARIABLES LIKE 'query_cache_%';
SHOW STATUS LIKE 'Qcache%';
注意事项与局限性
尽管Query Cache能提升简单查询的性能,但它存在明显缺点: 在高并发写入场景下,缓存频繁失效,反而成为性能瓶颈 锁竞争严重,尤其是多线程环境下 只适用于完全相同的SQL语句,大小写、空格不同都会视为不同查询 MySQL 8.0起已彻底移除Query Cache功能,不推荐在新项目中依赖它 对于MySQL 8.0及以上版本,官方建议通过其他方式优化查询性能,如合理使用索引、调整缓冲池大小(innodb_buffer_pool_size)、使用外部缓存(如Redis)等。基本上就这些。如果你还在使用老版本MySQL且读多写少,适当配置Query Cache可能有一定帮助,但要注意监控其实际效果。一旦升级到MySQL 8.0,相关参数将不再有效。
