详解mysql查询缓存简单使用
MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,属于Oracle旗下产品。MySQL是最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,关系数据库管理系统)应用软件之一。
当我们开启Mysql的查询缓存,当执行完全相同的SQL语句的时候,服务器就会直接从缓存中读取结果。当数据被修改,之前的缓存会失效,所以修改比较频繁的表不适合做查询缓存。
一、查询缓存的实现流程
二、配置查询缓存
1、查看当前的mysql数据库是否支持查询缓存
SHOWVARIABLESLIKE'have_query_cache';
2、查看当前mysql是否开启了查询缓存
SHOWVARIABLESLIKE'query_cache_type';
3、查看查询缓存的占用大小
SHOWVARIABLESLIKE'query_cache_size';
4、查看查询缓存的状态变量
SHOWSTATUSLIKE'Qcache%';
参数 | 含义 |
---|---|
Qcache_free_blocks | 查询缓存中的可用内存块数 |
Qcache_free_memory | 查询缓存的可用内存量 |
Qcache_hits | 查询缓存命中数 |
Qcache_inserts | 添加到查询缓存的查询数 |
Qcache_lowmen_prunes | 由于内存不足而从查询缓存中删除的查询数 |
Qcache_not_cached | 非缓存查询的数量(由于query_cache_type设置而无法缓存或未缓存) |
Qcache_queries_in_cache | 查询缓存中注册的查询数 |
Qcache_total_blocks | 查询缓存中的块总数 |
三、开启查询缓存
MySQL的查询缓存默认是关闭的,需要手动配置参数query_cache_type,来开启查询缓存。query_cache_type
该参数的可取值有三个
值 | 含义 |
---|---|
OFF或0 | 查询缓存功能关闭 |
ON或1 | 查询缓存功能打开,SELECT的结果符合缓存条件即会缓存,否则,不予缓存,显式指定SQL_NO_CACHE,不予缓存 |
DEMAND或2 | 查询缓存功能按需进行,显式指定SQL_CACHE的SELECT语句才会缓存;其它均不予缓存 |
1、在usr/my.cnf中进行配置(配置文件也可能在/etc/my.cnf)
2、重启服务
servicemysqlrestart
3、测试
四、查询缓存SELECT选项
可以在SELECT语句中指定两个与查询缓存相关的选项
- SQL_CACHE:如果查询结果是可缓存的,并且query_cache_type系统变量的值为ON或DEMAND,则缓存查询结果。
- SQL_NO_CACHE:服务器不使用查询缓存。它既不检查查询缓存,也不检查结果是否已缓存,也不缓存查询结果
SELECTSQL_CACUEid,nameFROMcustomer; SELECTSQL_NO_CACHEid,nameFROMcustomer;
五、查询缓存失效现象
1、SQL语句不一致
要想命中缓存,查询的SQL语句必须一致
SQL1:selectcount(*)fromtb_item; SQL2:selectcount(*)fromtb_Item;
2、查询语句有一些不确定的值
SQL1:select*fromtb_itemwhereupdatetime3、不使用任何表查询语句
select'A';4、查询mysql、information_schema或performance_schema数据库中的表
select*frominformation_schema.engines;5、在存储的函数、触发器或事件主体内执行的查询
如题
6、表更改导致缓存删除
如果表更改,则使用该表的所有高速缓存查询都将变为无效并从高速缓存中删除。这包括使用MERGE映射到已更改表的表的查询。一个表可以被许多类型的语句,如被改变INSERT,UPDATE,DELETE,TRUNCATETABLE,ALTERTABLE,DROPTABLE,或DROPDATABASE。
以上便是关于mysql查询缓存简单使用总结
到此这篇关于详解mysql查询缓存简单使用的文章就介绍到这了,更多相关mysql查询缓存使用内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。