当前位置:Gxlcms > 数据库问题 > MySql高级三

MySql高级三

时间:2021-07-01 10:21:17 帮助过:2人阅读

3、什么样的语句不会被缓存?

查询语句中有一些不确定数据时,不会缓存:如NOW(),CURRENT_TIME();

一般来说,如果查询中包含用户自定义函数、存储函数、用户变量、临时表、

mysql库中系统表或者权限表,一般都不会被缓存。


4、缓存带来的额外开销?

每个查询都得先检查是否命中。

查询结果要先缓存。


5、与缓存相关的变量:

mysql>show global variables like ‘query_cache%‘;

+------------------------------+----------+

| Variable_name                | Value    |

+------------------------------+----------+

| query_cache_limit            | 1048576  |

| query_cache_min_res_unit     | 4096     |

| query_cache_size             | 16777216 |

| query_cache_type             | ON       |

| query_cache_wlock_invalidate | OFF      |

+------------------------------+----------+

query_cache_type:

是否开启缓存功能,其值有三种ON|OFF|DEMAND,其中DEMAND如果要缓存需要在select语句中需要显示指明 sql_cache

query_cache_size:

缓存总空间,单位字节,大小必须为1024的整数倍。如果变更大小,会清空当前缓存。

query_cache_min_res_unit:存储缓存的最小内存块。

     (query_cahce_size-Qcache_free_memory)/Qcache_queries_in_cache即(缓存总空间-空闲缓存空间)/缓存个数

query_cache_limit:

单个缓存对象的最大值,超过则不缓存。

可以手动使用sql_no_cache人为地避免尝试缓存返回查询结果超出此参数限定值的语句。

query_cache_wlock_invalidate:如果某表被其他用户连接锁住了,是否仍然从缓存中返回结果,OFF为返回。


6、如果判断缓存命中率:

(1)、mysql>show global status like ‘Qcache%‘;

+-------------------------+----------+

| Variable_name           | Value    |

+-------------------------+----------+

| Qcache_free_blocks      | 1        |

| Qcache_free_memory      | 16757128 |

| Qcache_hits             | 3        |

| Qcache_inserts          | 2        |

| Qcache_lowmem_prunes    | 0        |

| Qcache_not_cached       | 29       |

| Qcache_queries_in_cache | 2        |

| Qcache_total_blocks     | 6        |

+-------------------------+----------+

Qcache_hits :命中缓存的次数。

Qcache_inserts:写入缓存的次数。

Qcache_free_memory:空闲缓存空间。

Qcache_total_blocks:已申请的块数。

Qcache_free_blocks:空闲块数。

Qcache_queries_in_cache:缓存个数

Qcache_not_cached:未被缓存个数

Qcache_lowmem_prunes:因缓存总空间太小,进行修减(腾出老缓存的次数)内存的次数。


(2)、命中率指标:

(2.1)、次数命中率:Qcache_hits/(Com_select+Qcache_hits)

mysql>show global status where variable_name=‘Qcache_hits‘ or variable_name=‘Com_select‘;

+---------------+-------+

| Variable_name | Value |

+---------------+-------+

| Com_select   | 35   |

| Qcache_hits  | 3    |

+---------------+-------+

(2.2)、命中率的另一个参考指标为:命中和写入的比率,即Qcache_hits/Qcache_inserts的值,

此值如果大于3:1,则表明缓存也是有效,能达到10:1,则比较理想。

7、碎片整理:

    FLUSH QUERY_CACHE

8、清空缓存:

    RESET QUERY_CACHE


MySql高级三

标签:mysql

人气教程排行