启用 MySQL 和 MariaDB 查询缓存

栏目: 数据库 · Mysql · 发布时间: 7年前

内容简介:很多新手都在使用 Memcached 或者 Redis 扩展来加速服务器数据库的运行性能,其实这些扩展对于小博客的服务器来说有时候是个负担和安全隐患的,具体可以参考【MySQL 或 MariaDB 数据库的运行性能呢?其实 MySQL 和 MariaDB 都是支持“查询缓存”功能,并且启用MySQL查询缓存可以极大地减低数据库服务器的CPU使用率,实际使用情况是:开启前CPU使用率120%左右,开启后降到了10%。明月已经用这个方法加速我的 MariaDB 数据库近一年多时间了,所以我一直都没有再使用过

很多新手都在使用 Memcached 或者 Redis 扩展来加速服务器数据库的运行性能,其实这些扩展对于小博客的服务器来说有时候是个负担和安全隐患的,具体可以参考【 理智冷静的使用 Memcached 或者 Redis 】一文,那么不使用优化扩展我们如何来提升

MySQL 或 MariaDB 数据库的运行性能呢?

其实 MySQL 和 MariaDB 都是支持“查询缓存”功能,并且启用MySQL查询缓存可以极大地减低数据库服务器的CPU使用率,实际使用情况是:开启前CPU使用率120%左右,开启后降到了10%。明月已经用这个方法加速我的 MariaDB 数据库近一年多时间了,所以我一直都没有再使用过 Memcached 或者 Redis 了。

今天就给大家讲讲如何开启这个“查询缓存”。

启用 MySQL 和 MariaDB 查询缓存

查看查询缓存情况

mysql> show variables like '%query_cache%';

query_cache_typeON 表示已经开启)

+------------------------------+----------+
| 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';

启用 MySQL 和 MariaDB 查询缓存

这个“查询缓存”算是 MySQL 或者 MariaDB 默认原生的加速方法了,稳定性和兼容性不用质疑,绝对的可靠!同时还免去了使用第三方缓存扩展带来的安全隐患,没有开启的尽快去开启吧!记住开启前一定要清除 Memcached 或者 Redis 进程哦,否则就起不到加速的效果了!


以上所述就是小编给大家介绍的《启用 MySQL 和 MariaDB 查询缓存》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Programming in Haskell

Programming in Haskell

Graham Hutton / Cambridge University Press / 2007-1-18 / GBP 34.99

Haskell is one of the leading languages for teaching functional programming, enabling students to write simpler and cleaner code, and to learn how to structure and reason about programs. This introduc......一起来看看 《Programming in Haskell》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

MD5 加密
MD5 加密

MD5 加密工具