zoukankan      html  css  js  c++  java
  • MYSQL Query Cache 浅谈

    查看缓存相关的命令

    1.show status like 'qc%';

    结果

    Qcache_free_blocks:目前还处于空闲状态的 Query Cache 中内存 Block 数目
    Qcache_free_memory:目前还处于空闲状态的 Query Cache 内存总量
    Qcache_hits:Query Cache 命中次数
    Qcache_inserts:向 Query Cache 中插入新的 Query Cache 的次数,也就是没有命中的次数
    Qcache_lowmem_prunes:当 Query Cache 内存容量不够,需要从中删除老的 Query Cache 以给新的 Cache 对象使用的次数
    Qcache_not_cached:没有被 Cache 的 SQL 数,包括无法被 Cache 的 SQL 以及由于 query_cache_type 设置的不会被 Cache 的 SQL
    Qcache_queries_in_cache:目前在 Query Cache 中的 SQL 数量
    Qcache_total_blocks:Query Cache 中总的 Block 数量

    缓存设置参数

    query_cache_limit:允许 Cache 的单条 Query 结果集的最大容量,默认是1MB,超过此参数设置的 Query 结果集将不会被 Cache
    query_cache_min_res_unit:设置 Query Cache 中每次分配内存的最小空间大小,也就是每个 Query 的 Cache 最小占用的内存空间大小
    query_cache_size:设置 Query Cache 所使用的内存大小,默认值为0,大小必须是1024的整数倍,如果不是整数倍,MySQL 会自动调整降低最小量以达到1024的倍数
    query_cache_type:控制 Query Cache 功能的开关,可以设置为0(OFF),1(ON)和2(DEMAND)三种,意义分别如下:
    ◦0(OFF):关闭 Query Cache 功能,任何情况下都不会使用 Query Cache
    ◦1(ON):开启 Query Cache 功能,但是当 SELECT 语句中使用的 SQL_NO_CACHE 提示后,将不使用Query Cache
    ◦2(DEMAND):开启 Query Cache 功能,但是只有当 SELECT 语句中使用了 SQL_CACHE 提示后,才使用 Query Cache
    query_cache_wlock_invalidate:控制当有写锁定发生在表上的时刻是否先失效该表相关的 Query Cache,如果设置为 1(TRUE),则在写锁定的同时将失效该表相关的所有 Query Cache,如果设置为0(FALSE)则在锁定时刻仍然允许读取该表相关的 Query Cache。

    最后总结

    1.一条SQL语句映射一个缓存(各种复杂SQL也一样)

      区别大小写,包括空格,所以在写SQL时要注意这点
    2.MySQL 接受到客户端的SQL后,仅仅只需要对其进行相应的权限验证后就会通过 Query Cache 来查找结果,甚至都不需要经过 Optimizer 模块进行执行计划的分析优化,更不许要发生任何存储引擎的交互,减少了大量的磁盘 IO 和 CPU 运算,所以效率非常高。

  • 相关阅读:
    【模板】Sparse-Table
    UVa 11235 Frequent values
    【模板】树状数组
    UVa 1428 Ping pong
    数学技巧
    UVa 11300 Spreading the Wealth
    UVa 11729 Commando War
    UVa 11292 Dragon of Loowater
    POJ 3627 Bookshelf
    POJ 1056 IMMEDIATE DECODABILITY
  • 原文地址:https://www.cnblogs.com/bobsoft/p/2786018.html
Copyright © 2011-2022 走看看