一般情况下,我们不会用到数据库自带的缓存,所以 MySQL 默认是不开启缓存的。只有以读为主的业务,数据不变化的情况下,可以开启数据库的缓存。
查看缓存是否开启:
show variables like 'query_cache%';
queyr_cache_type:on,表示缓存开启,默认是关闭的,可以通过修改 MySQL 配置文件 my.cnf 进行调整,重启服务后生效。
query_cache_limit:1048576,表示单词查询缓存的结果集大小1M,超过1M则不会缓存。
query_cache_size,表示缓存开辟的空间大小。
查看缓存操作情况:
show status like 'Qcache%';
Qcache_hits:表示缓存命中次数
Qcache_inserts:表示缓存写入次数
缓存生效的条件是在缓存开启的情况下,执行的sql 语句字符串一模一样的时候,可以从缓存直接读取数据,但是当缓存数据相关的表存在数据变化的时候,原有的缓存就会失效,需要重新写入缓存。
MySQL 的缓存开启后,当 sql 查询语句带有 sql_no_cache 关键字或者带有函数操作或者单次查询结果集超过 query_cache_limit 的设置的值或者查询系统表时,不会用到缓存。
我们在开发中,最好不要开启缓存,将 query_cache_type 设置为off,query_cache_size 设置为 0;缓存一般会用 Redis 方案来替代。
后面将为大家介绍索引的本质与数据结构。