启用MySQL查询缓存

原创 2015年07月08日 17:42:27

启用MySQL查询缓存可以极大地减低数据库服务器的CPU使用率,实际使用情况是:开启前CPU使用率120%左右,开启后降到了10%。


查看查询缓存情况:
mysql> show variables like '%query_cache%'; 
(query_cache_type 为 ON 表示已经开启)
+------------------------------+----------+
| Variable_name                | Value    |
+------------------------------+----------+
| have_query_cache             | YES      |
| query_cache_limit            | 1048576  |
| query_cache_min_res_unit     | 4096     |
| query_cache_size             | 20971520 |
| query_cache_type             | ON       |
| query_cache_wlock_invalidate | OFF      |
+------------------------------+----------+

如果不是ON,修改配置文件以开启查询缓存:
> vi /etc/my.cnf
[mysqld]中添加:
query_cache_size = 20M
query_cache_type = ON

重启mysql服务:
> service mysql restart

查看缓存使用情况:
mysql> show status like 'qcache%';  
+-------------------------+----------+
| Variable_name           | Value    |
+-------------------------+----------+
| Qcache_free_blocks      | 83       |
| Qcache_free_memory      | 19811040 |
| Qcache_hits             | 3108196  |
| Qcache_inserts          | 757254   |
| Qcache_lowmem_prunes    | 20720    |
| Qcache_not_cached       | 47219    |
| Qcache_queries_in_cache | 47       |
| Qcache_total_blocks     | 276      |
+-------------------------+----------+

    其中各个参数的意义如下:  
  • Qcache_free_blocks:缓存中相邻内存块的个数。数目大说明可能有碎片。FLUSH QUERY CACHE会对缓存中的碎片进行整理,从而得到一个空闲块。  
  • Qcache_free_memory:缓存中的空闲内存。  
  • Qcache_hits:每次查询在缓存中命中时就增大  
  • Qcache_inserts:每次插入一个查询时就增大。命中次数除以插入次数就是不中比率。  
  • Qcache_lowmem_prunes:缓存出现内存不足并且必须要进行清理以便为更多查询提供空间的次数。这个数字最好长时间来看;如果这个 数字在不断增长,就表示可能碎片非常严重,或者内存很少。(上面的 free_blocks和free_memory可以告诉您属于哪种情况)  
  • Qcache_not_cached:不适合进行缓存的查询的数量,通常是由于这些查询不是 SELECT 语句或者用了now()之类的函数。  
  • Qcache_queries_in_cache:当前缓存的查询(和响应)的数量。  
  • Qcache_total_blocks:缓存中块的数量。 

对于某些不想使用缓存的语句,可以这样使用:
select SQL_NO_CACHE count(*) from users where email = 'hello';

原创文章,转载请注明转自Clement-Xu的csdn博客。

版权声明:本文为原创文章,转载请注明转自Clement-Xu的csdn博客。

mysql的查询缓存

提高单台节点的性能无外乎就那么几种方式,缓存是首当其冲的,因为内存的性能比磁盘高的太多。缓存也是一种典型的空间换时间的策略      缓存的实现也有太多的方式,从静态页面缓存到服务端动态缓存,再到数...
  • king_kgh
  • king_kgh
  • 2017年07月09日 00:05
  • 317

MySQL查询缓存总结

可以通过下面的SQL查看当前查询缓存相关参数状态: SHOW VARIABLES LIKE '%query_cache%'; 输出结果类似下面:    qu...
  • PHPService
  • PHPService
  • 2015年07月05日 19:45
  • 3859

MySQL关闭查询缓存(QC)的两种方法

IT圈的那些事儿 2017-03-14 08:29 MySQL Query Cache 会缓存select 查询,安装时默认是开启的,但是如果对表进行INSERT, UPDATE, DELE...
  • u011277123
  • u011277123
  • 2017年03月20日 17:47
  • 5290

Mysql缓存看上去很美

当你的数据库打开了Query Cache(简称QC)功能后,数据库在执行SELECT语句时,会将其结果放到QC中,当下一次处理同样的SELECT请求时,数据库就会从QC取得结 果,而不需要去数据表中查...
  • lt3487928
  • lt3487928
  • 2015年04月14日 15:22
  • 3744

合理配置MySQL缓存 提高缓存命中率(转)

众所周知,系统读取数据时,从内存中读取要比从硬盘上速度要快好几百倍。故现在绝大部分应用系统,都会最大程度的使用缓存(内存中的一个存储区域),来提高系统的运行效率。MySQL数据库也不例外。在这里,笔者...
  • qq_21064841
  • qq_21064841
  • 2016年11月29日 14:53
  • 785

Mysql缓存研究

缓存机制简单的说就是缓存sql文本及查询结果,如果运行相同的sql,服务器直接从缓存中取到结果,而不需要再去解析和执行sql。如果表更改了,那么使用这个表的所有缓存查询将不再有效,查询缓存值的相关条目...
  • gzh0222
  • gzh0222
  • 2012年09月20日 18:44
  • 6317

mysql缓冲和缓存设置

MySQL 可调节设置可以应用于整个 mysqld进程,也可以应用于单个客户机会话。 服务器端的设置 每个表都可以表示为磁盘上的一个文件,必须先打开,后读取。为了加快从文件中读取数据的过程,mys...
  • libaolin198706231987
  • libaolin198706231987
  • 2015年12月14日 11:44
  • 6955

使用Memcache缓存mysql数据库操作的原理和缓存过程浅析

对于大型网站如facebook,ebay等网站,如果没有Memcache做为中间缓存层,数据访问不可能吃得消,对于一般网站,只要具备独立的服务器,完全可以通过配置Memcache提高网站访问速度和减少...
  • liqfyiyi
  • liqfyiyi
  • 2016年03月15日 09:40
  • 5403

mysql查询缓存

这个功能跟11g的结果集缓存是一个东西,查询缓存存放的事select的文本和对应的结果集,如果客户端来个查询,发现对应的结果在结果集中,直接返回不用去解析执行语句了,查询缓存在会话中是共享的,所以一个...
  • aoerqileng
  • aoerqileng
  • 2016年05月02日 09:23
  • 430

mysql查询缓存配置和查看

Mysql 查询缓存 查询缓存的作用就是当查询接收到一个和之前同样的查询,服务器将会从查询缓存种检索结果,而不是再次分析和执行上次的查询。这样就大大提高了性能,节省时间。 1.配置查询缓存 ...
  • czh0423
  • czh0423
  • 2015年04月23日 15:27
  • 4433
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:启用MySQL查询缓存
举报原因:
原因补充:

(最多只允许输入30个字)