zoukankan      html  css  js  c++  java
  • mysql中的SQL_CACHE(性能更优化)

    mysql中的sql_cache是个容易忽视的地方,要
    使用的话,必须先设置query_cache_size,
    以及设置query_cache_type ,其中
    query_cache_type 这个可以被设置为 (只能是数字) 选项  含义 
    0  (OFF, 不缓存或重新得到结果) 
    1  (ON, 缓存所有的结果,除了 SELECT SQL_NO_CACHE ... 查询) 
    2  (DEMAND, 仅缓存 SELECT SQL_CACHE ... 查询) 

    所以设置为1时,可以如下这样查询的话,会用到缓存
    SELECT SQL_CACHE something FROM table

    强制不使用缓存
    SELECT SQL_NO_CACHE id,field FROM table WHERE 1

    使用 FLUSH QUERY CACHE 命令,你可以整理查询缓存,以更好的利用它的内存。这个命令不会从缓存中移除任何查询。FLUSH TABLES 会转储清除查询缓存。

    RESET QUERY CACHE 使命从查询缓存中移除所有的查询结果。

    你可以检查查询缓存在你的 MySQL 是否被引进:

    mysql> SHOW VARIABLES LIKE 'have_query_cache';
    +------------------+-------+
    | Variable_name    | Value |
    +------------------+-------+
    | have_query_cache | YES   |
    +------------------+-------+
    1 row in set (0.00 sec)

    在 SHOW STATUS 中,你可以监视查询缓存的性能:

    变量  含义 
    Qcache_queries_in_cache  在缓存中已注册的查询数目 
    Qcache_inserts  被加入到缓存中的查询数目 
    Qcache_hits  缓存采样数数目 
    Qcache_lowmem_prunes  因为缺少内存而被从缓存中删除的查询数目 
    Qcache_not_cached  没有被缓存的查询数目 (不能被缓存的,或由于 QUERY_CACHE_TYPE) 
    Qcache_free_memory  查询缓存的空闲内存总数 
    Qcache_free_blocks  查询缓存中的空闲内存块的数目 
    Qcache_total_blocks  查询缓存中的块的总数目 

    Total number of queries = Qcache_inserts + Qcache_hits + Qcache_not_cached.

    查询缓存使用变长的块,因而 Qcache_total_blocks 和 Qcache_free_blocks 可能显示查询缓存的碎片。在 FLUSH QUERY CACHE 之后,只有剩余一个单独的(大的)空闲块。

    注意:每个查询最小需要两个块(一个用于存储查询文本,另一个或多个用于存储查询结果)。同样的,每个被一个查询使用的表需要一个块,但是,如果有两个或更多的查询使用同一张表,仅仅只需要分配一个块就行了。

    你可以使用状态变量 Qcache_lowmem_prunes 来谐调查询缓存尺寸。它计数被从缓存中移除的查询,该查询的移除是为了释放内存,以缓存新建的查询。查询缓存使用一个 least recently used (LRU) 策略来判断从缓存中移除哪个查询。

  • 相关阅读:
    最小的K个数
    CentOS 7 连接不到网络解决方法
    数组中超过一半的数字
    字符串的排列
    二叉搜索树与双向链表
    复杂链表的复制
    二叉树中和为某一数值的路径
    二叉搜索树的后序遍历序列
    从上到下打印二叉树
    java的图形文档
  • 原文地址:https://www.cnblogs.com/ivanpan/p/6739801.html
Copyright © 2011-2022 走看看