• 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.缓存查询分析步骤:

      

  • 相关阅读:
    macOS 升级后重装命令行工具的问题
    Windows系统制作Ubuntu启动U盘(命令行)
    远程管理相关命令的学习(域名和端口号的概念)
    远程管理相关命令的学习(ssh工作方式的简介)
    远程管理相关命令的学习(网卡和IP地址)
    远程管理相关命令的学习(shutdown)
    其他命令的使用(echo find 硬软链接)
    文件内容相关命令(cat more grep)
    拷贝和移动文件(tree cp mv命令的使用)
    touch mkdir rm命令的使用
  • 原文地址:https://www.cnblogs.com/gaara-zhang/p/9962910.html
Copyright © 2020-2023  润新知