最近接手管理几台Mysql服务器,原先query_cache_size为4G,被我改成了512M,后来就出现了如题描述的问题

解决方案 »

  1.   

    从来没见过开这么大的query_cache,这个东西最好别开贴你的语句显示
      

  2.   

    (root:MYSQLNUM05:)[(none)]> show status like 'Qcache_%';
    +-------------------------+-----------+
    | Variable_name           | Value     |
    +-------------------------+-----------+
    | Qcache_free_blocks      | 67495     | 
    | Qcache_free_memory      | 346697536 | 
    | Qcache_hits             | 27205076  | 
    | Qcache_inserts          | 8413944   | 
    | Qcache_lowmem_prunes    | 723463    | 
    | Qcache_not_cached       | 2838399   | 
    | Qcache_queries_in_cache | 109282    | 
    | Qcache_total_blocks     | 288054    | 
    +-------------------------+-----------+
    8 rows in set (0.00 sec)
    (root:MYSQLNUM05:)[(none)]> show variables like 'query_cache_%';
    +------------------------------+-----------+
    | Variable_name                | Value     |
    +------------------------------+-----------+
    | query_cache_limit            | 134217728 | 
    | query_cache_min_res_unit     | 2048      | 
    | query_cache_size             | 536870912 | 
    | query_cache_type             | ON        | 
    | query_cache_wlock_invalidate | OFF       | 
    +------------------------------+-----------+
    5 rows in set (0.00 sec)
      

  3.   

    是不是有取很大的结果集 直接占用了很大的缓存,然后就缓存占光但是缓存的数据涉及的表又频繁变更,导致这个占用大空间的sql的结果集cache频繁过期所有就会看到虽然留有很大空闲空间,但是被换出结果集很多  
      

  4.   

    query_cache_size设置太大导致缓存把内存吃光了。
      

  5.   

    mysql> select 134217728/1024/1024;
    +---------------------+
    | 134217728/1024/1024 |
    +---------------------+
    |        128.00000000 |
    +---------------------+
    1 row in set (0.00 sec)超过128M的结果集的SQL,就不会被CACHE到。可用内存330M也没用
     
    +----------------------+
    | 346697536 /1024/1024 |
    +----------------------+
    |         330.63653564 |
    +----------------------+
    1 row in set (0.02 sec)
      

  6.   

    mysql> select 134217728/1024/1024;
    +---------------------+
    | 134217728/1024/1024 |
    +---------------------+
    |        128.00000000 |
    +---------------------+
    1 row in set (0.00 sec)超过128M的结果集的SQL,就不会被CACHE到。可用内存330M也没用
     
    +----------------------+
    | 346697536 /1024/1024 |
    +----------------------+
    |         330.63653564 |
    +----------------------+
    1 row in set (0.02 sec)
      

  7.   

    我觉得你说的这种情况仅限于可能性,我还是怀疑是由于我修改query_cache_size后没有重启mysql导致的,但不能确定。
    你的回复还是最给力的,谢谢!