• mysql查询缓存


    开启mysql缓存后,数据没有更新的情况下,相同的查询sql会使用缓存数据返回结果。在数据更新较少,类似查询较多的情况下,使用mysql缓存可以显著提升查询效率。

    mysql查询缓存参数设置

    (1) have_query_cache表示是否支持查询缓存,YES表示支持

    (2) query_cache_type表示缓存类型,OFF表示关闭查询缓存,ON表示开启查询缓存,DEMAND表示用户自定义查询缓存

    (3) query_cache_limit表示支持的最大单条查询sql数据量

    (4) query_cache_min_res_unit表示查询缓存最小单位

    (5) query_cache_size表示查询缓存空间大小

    (6) query_cache_wlock_invalidate表示查询缓存是否支持写锁,OFF表示不支持,即读取数据不考虑写锁,ON表示支持,即读取数据会被写锁阻塞

    查询缓存使用

    (1) 只有字符串相等查询sql才使用相同缓存,即select name from city与SELECT name FROM city不使用同一个缓存。

    (2) 在query_cache_type为ON的情况下,默认所有查询都使用缓存,我们可以使用sql_no_cache显示指定某个查询不使用缓存

    select sql_no_cache name from city;

    (3) 在query_cache_type为DEMAND的情况下,需要使用sql_cache指定某个查询使用缓存

    select sql_cache name from city;

    缓存使用情况查询

    查询缓存变量只能在my.ini文件中设置

    执行查询语句:select sql_cache name from city;

    执行show status like 'Qcache%';

     

    (1) Qcache_free_blocks表示已分配内存块中空闲块数量;

    (2) Qcache_total_blocks表示当前查询缓存占用的内存块数量;

    (3) Qcache_free_memory表示缓存空闲空间大小;

    (4) Qcache_hits表示缓存命次数;

    (5) Qcache_inserts表示缓存未命中时,数据写入缓存次数;

    (6) Qcache_queries_in_cache表示缓存查询语句数量;

    (7) Qcache_lowmem_prunes表示缓存修剪次数,缓存满时,会使用LRU算法移除最久未被使用缓存,此值较大,说明缓存空间太小;

    (8) Qcache_not_cached表示没有被缓存的查询sql数量。

    查询缓存的碎片率  =(Qcache_free_blocks / Qcache_total_blocks)* 100%

    如果Qcache_free_blocks的值过大,则碎片率越高,证明我们缓存内存碎片略多,可以尝试适当的调小query_cache_min_res_unit的值,也可以使用 FLUSH QUERY CACHE语句来清理缓存碎片。

    查询缓存利用率  = (query_cache_size - Qcache_free_memory) / query_cache_size  * 100%

    如果查询缓存利用率太低,则表示query_cache_size设置的可能过大,可适度调小,如果缓存利用率非常高,同时Qcache_lowmem_prunes的值比较大,则表示query_cache_size的值设置的略小。

    query_cache_min_res_unit的预估值参考计算公式: (query_cache_size - Qcache_free_memory) / Qcache_queries_in_cache

    查询缓存命中率  = (Qcache_hits / Com_select)* 100%

    上述公式中的Com_select表示查询语句的执行次数(这样描述并不准确),可以使用如下语句获得查询语句的执行次数

    show status like 'Com_select%';

    重置缓存

    reset query cache;

  • 相关阅读:
    VMWare磁盘配置的问题终于解决了!!
    十种老板不可追随
    关于ASP无组件上传在2003下出错
    设计模式的有趣解释-追MM[转]
    "未能在给定的程序集中找到任何适合于指定的区域性(或非特定区域性)的资源"解决办法
    今天看到了DNN3.0.4,感觉挺不错的,确实有很大的改进!!!
    今天加入了博客园
    一个女孩写的经典程序!!! (转载)
    加了强名后经常出现错误“程序集清单定义与程序集引用不匹配”
    C#写一个URL编码转换GB23121的方法,然后可以取到天气预报
  • 原文地址:https://www.cnblogs.com/coshaho/p/7192343.html
Copyright © 2020-2023  润新知