zoukankan      html  css  js  c++  java
  • mysql 查询缓存

    1.当前表的查询缓存状态查询:

    SHOW VARIABLES LIKE '%query_cache%';
    

     2.sql语句会从查询缓存读条件:

      sql完全一致:即使多一个空格或者大小写不同都认为不同;如果使用不同的字符集、不同的协议等也会被认为是不同的查询而分别进行缓存。

    3.查看查询缓存命中次数:

    SHOW STATUS LIKE 'Qcache_hits';
    

     4.查询缓存失效:

      在表的结构或数据发生改变时,查询缓存中的数据不再有效。有这些INSERT、UPDATE、 DELETE、TRUNCATE、ALTER TABLE、DROP TABLE或DROP DATABASE会导致缓存数据失效。所以查询缓存适合有大量相同查询的应用,不适合有大量数据更新的应用。

    5.保存至查询缓存:

      缓存会在内存中开辟一块内存(query_cache_size)来维护缓存数据,其中有大概40K的空间是用来维护缓存的元数据的(什么是元数据:http://www.cnblogs.com/Alight/p/3982086.html),例如空间内存,数据表和查询结果的映射,SQL和查询结果的映射等.

      保存图示:

    6.查询缓存缺点:

      1.查询缓存需要占用一定的内存;2.每次查询执行前都要先检查缓存,故不一定有利;

    7.调优:

      1.如果需要缓存的查询很少,可以将query_cache_type设置为demand,然后对需要缓存的查询后面添加sql_cache。

      2.如果写入操作很多,这个时候可以禁用缓存,并将缓存大小query_cache_size设置为0,这样就不会占用内存。

      3.如果写操作存在,也想用查询缓存,那么就让写操作成批量的执行,而不是逐个执行。

    8.具体情况分析:

      衡量打开缓存是否对系统有性能提升是一个很难的话题

      1. 通过缓存命中率判断, 缓存命中率 = 缓存命中次数 (Qcache_hits) / 查询次数 (Com_select)

      2. 通过缓存写入率, 写入率 = 缓存写入次数 (Qcache_inserts) / 查询次数 (Qcache_inserts)

      3. 通过 命中-写入率 判断, 比率 = 命中次数 (Qcache_hits) / 写入次数 (Qcache_inserts), 高性能MySQL中称之为比较能反映性能提升的指数,一般来说达到3:1则算是查询缓存有效,而最好能够达到10:1

    9.缓存查询分析步骤:

      

  • 相关阅读:
    Maven工程读取properties文件过程
    Nginx实现高可用(了解)
    使用Nginx实现负载均衡(tomcat集群之后实现交叉访问)
    使用Nginx实现反向代理过程(一台服务器部署两个网站)
    一台服务器,通过不同域名区分不同主机,配置步骤
    EditPlus5.0破解激活
    [通知] 博客停更
    [论文理解] 活体检测算法论文小结 (一)
    [CUDA] CUDA编程入门
    [学习笔记]《机器学习基础》 课程总结(一)
  • 原文地址:https://www.cnblogs.com/gaara-zhang/p/9962910.html
Copyright © 2011-2022 走看看