美文网首页
MySQL性能调优(一)架构优化--查询缓存优化

MySQL性能调优(一)架构优化--查询缓存优化

作者: chanyi | 来源:发表于2020-03-18 19:30 被阅读0次

    非活跃数据多的情况下首先考虑开启缓存

    1、开启查询缓存

    根据MySQLServer的架构图可以看出,当执行一条sql语句的时候,命令分发器会先去查询缓存模块中查取缓存,如果有缓存值,则直接返回缓存值,如果不存在缓存值,再向下查询。


    MySQLServer架构图

    1.1 查看是否开启

    所以首先开启缓存是优化的第一件事情(默认关闭),使用下面命令查看缓存是否开启

    show variables like '%query_cache%'; 
    

    查询结果如下:


    查询缓存是否开启

    说明:
    have_query_cache:是否支持Query Cache
    query_cache_limit:Query Cache 存放的单条Query 最大Result Set ,默认1M
    query_cache_min_res_unit:Query Cache 每个Result Set 存放的最小内存大小,默认4k
    query_cache_size:存放Query Cache 内存的大小
    query_cache_type:是否开启Query Cache
    query_cache_wlock_invalidate:当有写锁时,Query Cache是否还有效

    1.2 开启

    开启查询缓存的操作:
    (windows系统)
    打开my.ini文件,修改
    query_cache_type=1
    query_cache_size=20M
    然后重启mysql服务器(MySQL在windows下启动关闭
    (linux系统)
    执行

    vi /etc/my.cnf
    

    增加配置
    query_cache_size = 20M
    query_cache_type = ON
    然后重启mysql服务器
    重启命令

    service mysql restart
    

    再次查看确认开启

    确认开启

    1.3查看缓存的使用情况

    使用命令

     show status like 'qcache%';
    

    返回使用情况


    缓存使用情况

    Qcache_free_blocks:缓存中相邻内存块的个数,如果数量大说明可能有碎片
    Qcache_free_memory:空闲内存
    Qcache_hits:缓存命中次数
    Qcache_inserts:查询的次数,相同的查询语句不增加此项个数
    Qcache_lowmem_prunes:由于内存的问题,没有进入cache的查询次数,如果数量很大,需要考虑增加缓存大小和清理部分缓存
    Qcache_not_cached:没被缓存的查询次数,如果查询语句不想进入缓存,可以使用此命令

    select SQL_NO_CACHE * from users;
    

    Qcache_queries_in_cache:从缓存中返回数据的查询的次数
    Qcache_total_blocks:当前缓存中内存块的总数

    1.4缓存清理

    缓存中的碎片整理

    flush query cache;
    

    清除缓存

    reset query cache;
    

    参考资料:
    《MySQL性能调优与架构设计》
    https://blog.csdn.net/chen_xiaoqi/article/details/103934789

    相关文章

      网友评论

          本文标题:MySQL性能调优(一)架构优化--查询缓存优化

          本文链接:https://www.haomeiwen.com/subject/ovtcyhtx.html