加入收藏 | 设为首页 | 会员中心 | 我要投稿 文章分享网_茂名站长网 (https://www.0668zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

数据库查询缓存总结

发布时间:2021-04-28 15:38:31 所属栏目:外闻 来源:互联网
导读:中条件 缓存存在一个hash表中,通过查询SQL,查询数据库,客户端协议等作为key.在判断是否命中前,MySQL不会解析SQL,而是直接使用SQL去查询缓存,SQL任何字符上的不同,如空格,注释,都会导致缓存不命中. 如果查询中有不确定数据,例如CURRENT_DATE()和NOW()函数,那

中条件

缓存存在一个hash表中,通过查询SQL,查询数据库,客户端协议等作为key.在判断是否命中前,MySQL不会解析SQL,而是直接使用SQL去查询缓存,SQL任何字符上的不同,如空格,注释,都会导致缓存不命中.

如果查询中有不确定数据,例如CURRENT_DATE()和NOW()函数,那么查询完毕后则不会被缓存.所以,包含不确定数据的查询是肯定不会找到可用缓存的

2:工作流程

  • 服务器接收SQL,以SQL和一些其他条件为key查找缓存表(额外性能消耗)
  • 如果找到了缓存,则直接返回缓存(性能提升)
  • 如果没有找到缓存,则执行SQL查询,包括原来的SQL解析,优化等.
  • 执行完SQL查询结果以后,将SQL查询结果存入缓存表(额外性能消耗)

二、相关SQL语句

2.1、查看SQL缓存参数:show variables like '%query_cac数的意义如下:

  • Qcache_free_blocks:缓存中相邻内存块的个数。数目大说明可能有碎片。FLUSH QUERY CACHE会对缓存中的碎片进行整理,从而得到一个空闲块。
  • Qcache_free_memory:缓存中的空闲内存。
  • Qcache_hits:每次查询在缓存中命中时就增大
  • Qcache_inserts:每次插入一个查询时就增大。命中次数除以插入次数就是不中比率。
  • Qcache_lowmem_prunes:缓存出现内存不足并且必须要进行清理以便为更多查询提供空间的次数。这个数字最好长时间来看;如果这个 数字在不断增长,就表示可能碎片非常严重,或者内存很少。(上面的 free_blocks和free_memory可以告诉您属于哪种情况)
  • Qcache_not_cached:不适合进行缓存的查询的数量,通常是由于这些查询不是 SELECT 语句或者用了now()之类的函数。
  • Qcache_queries_in_cache:当前缓存的查询(和响应)的数量。
  • Qcache_total_blocks:缓存中块的数量。

2.2、开启SQL缓存:set global query_cache_type = 1;

2.3、关闭SQL缓存:set global query_cache_type = 0;

2.4、设置缓存空间:set global query_cache_size = 1024*1024*64 (64M)

2.5、固定SQL语句声明不适用缓存:select sql_no_cache * from 表名

注意:改变SQL语句的大小写或者数据表有数据改动,则不会调用缓存。

2.6、配置查询缓存

(编辑:文章分享网_茂名站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读