ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
# 查询缓存 > 缓存`select`语句的查询结果 ## 在配置文件中开启缓存 windows上是`my.ini`,linux上是`my.cnf` 在`[mysqld]`段中配置`query_cache_type`: * 0:不开启 * 1:开启,默认缓存所有,需要在SQL语句中增加`select sql-no-cache`提示来放弃缓存 * 2:开启,默认都不缓存,需要在SQL语句中增加`select sql-cache`来主动缓存(==常用==) 更改配置后需要重启以使配置生效,重启后可通过`show variables like ‘query_cache_type’;`来查看: ~~~sql show variables like 'query_cache_type'; query_cache_type DEMAND ~~~ ## 在客户端设置缓存大小 通过配置项`query_cache_size`来设置: ~~~sql show variables like 'query_cache_size'; query_cache_size 0 set global query_cache_size=64*1024*1024; show variables like 'query_cache_size'; query_cache_size 67108864 ~~~ ## 将查询结果缓存 `select sql_cache * from user;` ## 重置缓存 `reset query cache;` ## 缓存失效问题(大问题) 当数据表改动时,基于该数据表的任何缓存都会被删除。(表层面的管理,不是记录层面的管理,因此失效率较高) ## 注意事项 1. 应用程序,不应该关心`query cache`的使用情况。可以尝试使用,但不能由`query cache`决定业务逻辑,因为`query cache`由DBA来管理。 2. 缓存是以SQL语句为key存储的,因此即使SQL语句功能相同,但如果多了一个空格或者大小写有差异都会导致匹配不到缓存。