MySQL优化详解(四)——MySQL缓存设置

今天继续给大家介绍MySQL相关知识,本文主要内容是MySQL数据库的缓存设置。

一、MySQL缓存作用与设置

在常见的网络架构中,WEB前端负责接受用户的请求,并将其传递给数据库,数据库负责数据的存储和查询相关事项。MySQL数据库的数据都存储在磁盘中,当需要查询数据时,就必须前往磁盘中进行查询,由于磁盘的数据查询依赖磁盘臂的机械转动,这样就会极大的受限于磁盘I/O,从而导致查询速率下降。对此,一个通用的解决方法是,使用缓存技术。缓存技术,可以使得把MySQL查询的结果存放在内存的固定区域,这样,当再次查询相同内容时,就不用再去磁盘中进行查询,而是直接从内存把查询结果返回即可,这样可以极大的提升MySQL的查询速度。
MySQL数据库默认缓存功能关闭,如果想要开启缓存功能,需要打开/etc/my.cnf配置文件,并且在[mysqld]模块下添加:

query_cache_type=1
query_cache_size=16M

query_cache_type参数表示开启使用缓存,query_cache_size设置了缓存的大小,可以根据实际情况来确定,但是最好是2的整数次方倍。
这样,当添加上述参数后,重启MySQL数据库,就可以启用缓存机制了。

二、MySQL缓存查看

在登录数据库后,执行命令:

show status like 'qcache%';

可以查看当前缓存的相关信息,如下图所示:
MySQL优化详解(四)——MySQL缓存设置_第1张图片
在上图中,qcache_free_blocks表示缓存中相邻内存快的个数,如果该数值过大,就说明缓存中有大量的不相邻的内存区域,即内存碎片较多,此时,可以通过执行命令:flush query cache来进行清理;qcache_free_memory表示缓存中剩余空间大小;qcache_hits表示缓存命中的次数,该数值越高,表示缓存所发挥的作用越大;qcache_inserts表示查询一个在磁盘中的数据并插入缓存的次数;qcache_lowmem_prunes表示因内存不足而删除缓存的次数,即如果一直向缓存中写入内容,并且把缓存空间全部占据的情况下,新的查询如果还想要插入缓存,就必须把旧的缓存删除掉,每次进行一次删除,该参数的值就会加1,因此,从长时间来看的话,该参数的值越小越好;qcache_not_cached表示没有进行缓存的数量,包括查询内容还没有被缓存,或者说是不允许进行缓存;qcache_queries_in_cache表示当前缓存的查询数量;qcache_total_blocks表示当前缓存中块的数量。
利用这些参数,我们可以对配置的缓存效果进行评估,以便更加合理的优化我们的缓存设置。
例如,初始状态下,上述各参数的值为:
MySQL优化详解(四)——MySQL缓存设置_第2张图片
执行一次查询,上述各参数的值为:
MySQL优化详解(四)——MySQL缓存设置_第3张图片
可以看出,qcache_total_blocks参数增加,说明存入了缓存内容,qcache_inserts参数增大,说明向缓存中插入了一条记录。
再次执行该查询,上述各参数的值为:
MySQL优化详解(四)——MySQL缓存设置_第4张图片
可以看出,qcache_hits参数增加,说明命中一次缓存。
综上所述,缓存实际情况与我们之前预测完全一致!
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

你可能感兴趣的:(MySQL,mysql,缓存,数据库,MySQL缓存,运维DBA)