qcache_not_cached mysql提高命中率_mysql 提升命中率

本文介绍了MySQL的QueryCache如何提高数据库性能,通过设置query_cache_type和query_cache_size参数来启用缓存,并展示了如何查看缓冲状态。通过监控Qcache_hits和Com_select等指标,可以计算命中率,调整缓存策略。当UPDATE语句执行时,可能导致缓冲数据失效,这是性能与复杂度之间的权衡。
摘要由CSDN通过智能技术生成

Query Cache 在提高数据库性能方面具有非常重要的作用。其设定也非常简单,仅需要在配置文件写入两行: query_cache_type 和 query_cache _size,而且 MySQL 的 query cache 非常快!而且一旦命中,就直接发送给客户端,节约大量的 CPU 时间。当然,非 SELECT 语句对缓冲是有影响的,它们可能使缓冲中的数据过期。一个 UPDATE 语句引起的部分表修改,将导致对该表所有的缓冲数据失效,这是 MySQL 为了平衡性能而没有采取的措施。因为,如果每次 UPDATE 需要检查修改的数据,然后撤出部分缓冲将导致代码的复杂度增加。query_cache_type 0 代表不使用缓冲, 1 代表使用缓冲,2 代表根据需要使用。设置 1 代表缓冲永远有效,如果不需要缓冲,就需要使用如下语句:SELECT SQL_NO_CACHE * FROM my_table WHERE ...如果设置为 2 ,需要开启缓冲,可以用如下语句:SELECT SQL_CACHE * FROM my_table WHERE ...用 SHOW STATUS 可以查看缓冲的情况:mysql> show status like 'Qca%';+-------------------------+----------+| Variable_name | Value |+-------------------------+----------+| Qcache_queries_in_cache | 8 || Qcache_inserts | 545875 || Qcache_hits | 83951 || Qcache_lowmem_prunes | 0 || Qcache_not_cached | 2343256 || Qcache_free_memory | 33508248 || Qcache_free_blocks | 1 || Qcache_total_blocks | 18 |+-------------------------+----------+8 rows in set (0.00 sec)如果需要计算命中率,需要知道服务器执行了多少 SELECT 语句:mysql> show status like 'Com_sel%';+---------------+---------+| Variable_name | Value |+---------------+---------+| Com_select | 2889628 |+---------------+---------+1 row in set (0.01 sec)在本例中, MySQL 命中了 2,889,628 条查询中的 83,951 条,而且 INSERT 语句只有 545,875 条。因此,它们两者的和和280万的总查询相比有很大差距,因此,我们知道本例使用的缓冲类型是 2 。而在类型是 1 的例子中, Qcache_hits 的数值会远远大于 Com_select 。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值