mysql cache 配置_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) 策略来判断从缓存中移除哪个查询。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值