阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

MySQL缓存的配置和使用

372次阅读
没有评论

共计 3430 个字符,预计需要花费 9 分钟才能阅读完成。

在 MySQL 服务器高负载的情况下,必须采取一种措施给服务器减轻压力,减少服务器的 I / O 操作。一般采用的方法是优化 sql 操作语句,优化服务器的配置参数,从而提高服务器的性能。MySQL 使用了几种内存缓存数据的策略来提高性能。

一、MySQL 的缓存机制

  MySQL 缓存主要包括关键字缓存(key cache)和查询缓存(query cache),这主要讲解 MySQL 的查询缓存(query cache)机制。

1. 查询缓存概述

  在 mysql 的性能优化方面经常涉及到缓冲区(buffer)和缓存(cache),mysql 通过在内存中建立缓冲区(buffer)和缓冲(cache)来提高 mysql 性能。对于 innodb 数据库,mysql 采用缓冲池(buffer pool)的方式来缓存数据和索引;对于 mylsam 数据库,mysql 采用缓存的方式来缓存数据和索引。

  Mysql 查询缓存机制(query cache)简单的说就是缓存 sql 语句及查询结果,如果运行相同的 sql,服务器直接从缓存中提取结果,而不是再去解析和执行 sql。而且这些缓存能被所有的会话共享,一旦某个客户端建立了查询缓存,其他发送同样 sql 语句的客户端也可以使用这些缓存。

  如果表更改了,那么使用这个表的所有缓存查询将不再有效,查询缓存值得相关条目被清空。更改的是表中任何数据或是结构的改变,包括 insert、update、delete、truncate、alter table、drop table 或 drop database 等,也包括哪些映射到改变了表的使用 merge 表的查询。显然,这对于频繁更改的表,查询缓存是不合适的,而对于一些不常改变的数据且有大量相同 sql 查询的表,查询缓存会节约很大的性能。

  查询必须是完全相同的(逐字节相同)才能够被认为是相同的,字符的大小也被认为是不同的。另外,同样的查询字符由于其他原因可能认为是不同的。使用不同的数据库,不同的协议版本或者不同默认字符字符集的查询被认为是不同的查询并且分别进行缓存。

2.mysql 查询缓存的工作原理

  当 mysql 收到传入的 sql 语句时,它首先和先前已经解析过的 sql 语句进行比较,如果发现相同,则返回已缓存数据。一定是完全相同。下面两个是不同的:

01 SELECT 课程名 FROM KC;

02 select 课程名 from kc

  因为大小写的缘故,两条 sql 语句被认为是不同的,他们的缓存是不能共享的。另外,如果一条 sql 语句是另外一条 sql 语句的子串,类似下面的情况,第 02 行的语句不会被缓存;如果 sql 语句是存储过程、触发器或者事件内部的一条语句,同样也不会被缓存。查询缓存也受到权限的影响,对于没有权限访问数据库中数据的用户,即使输入了同样的 sql 语句,缓存中的数据也会无权访问。

01 SELECT 课程名 FROM KC where 学分 in(

02 SELECT 学分 FROM KC

03 );

  当传入的 sql 语句被认为是存在缓存的情况下,系统会修改 mysql 的一个状态变量 Qcache_hits,并将其值增加1,可以运行语句来查看qcahce_hits 的值,如下:

mysql> show status like '%qcache_hits%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Qcache_hits   | 0     |
+---------------+-------+
1 row in set (0.00 sec)

  上述表中,Qcache0,表示目前缓存的命中率为0,一旦缓存生效,该值大于1。例如,先输入如下的sql 语句:

01 select * from kc;其值增加1

以下这些形式的查询不会缓存。

l Select …… Lock in share mode

l Select …… For update

l Select …… Into outfile …

l Select …… Into dumpfile

l Select * from … Where autoincrement_col is null

3.查看 mysql 的缓存信息

  默认情况下 mysql 的查询缓存是被打开的,可以通过查询 mysql 的系统变量来查看 mysqld 是否支持缓存,输入下面命令:

mysql> show variables like 'have_query_cache';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| have_query_cache | YES   |
+------------------+-------+
1 row in set (0.00 sec)

mysql> show status like '%qcache_cache%';
Empty set (0.00 sec)

mysql> show status like '%qcache%';
+-------------------------+-------+
| Variable_name           | Value |
+-------------------------+-------+
| Qcache_free_blocks      | 0     |  缓存空闲的内存块
| Qcache_free_memory      | 0     |  在 query_cache_size 设置的缓存中的空闲的内存
| Qcache_hits             | 0     |  缓存的命中次数
| Qcache_inserts          | 0     |  查询缓存区此前总共缓存过多少条查询命令的结果
| Qcache_lowmem_prunes    | 0     |  查询缓存区已满而从其中溢出和删除的查询结果的个数
| Qcache_not_cached       | 0     |  
| Qcache_queries_in_cache | 0     |  
| Qcache_total_blocks     | 0     |  缓存总的内存块
+-------------------------+-------+
8 rows in set (0.00 sec)

二、mysql 查询缓存的配置和使用

1.配置查询缓存

  查询缓存的配置可以通过设置系统环境变量来完成,设置环境变量一般有两种方式:一种是配置文件中配置;另外可以在命令行中配置。

Vim /etc/my.cnf

MySQL 缓存的配置和使用

Query_cache_type可以是 0,1,20 代表不使用缓存,1代表使用缓存,2代表根据需要使用

2. 使用查询缓存

3. 查询缓存的维护

  在使用查询缓存时,可以通过 have_query_cache 来查看当前服务器是否支持查询缓存,

mysql> show variables like 'have_query_cache';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| have_query_cache | YES   |
+------------------+-------+
Yes 表示支持
当查询缓存工作一定时间后,通过 show status 来监控缓存的性能

mysql> show status like '%qcache%';
+-------------------------+-----------+
| Variable_name           | Value     |
+-------------------------+-----------+
| Qcache_free_blocks      | 1         |
| Qcache_free_memory      | 268414376 |
| Qcache_hits             | 0         |
| Qcache_inserts          | 2         |
| Qcache_lowmem_prunes    | 0         |
| Qcache_not_cached       | 3         |
| Qcache_queries_in_cache | 2         |
| Qcache_total_blocks     | 7         |
+-------------------------+-----------+
查询缓存会生成碎片,可以通过下面命令来清理碎片
mysql> flush query cache;
Query OK, 0 rows affected (0.00 sec)
如果想清理内存中的碎片:mysql> reset query cache;
Query OK, 0 rows affected (0.00 sec)
两个命令同时使用,彻底清理碎片。

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-08/146181.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计3430字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7971656
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换...
免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

  免费无广告!这款跨平台 AI RSS 阅读器,拯救你的信息焦虑 在算法推荐主导信息流的时代,我们...
【1024程序员】我劝你赶紧去免费领一个AWS、华为云等的主机

【1024程序员】我劝你赶紧去免费领一个AWS、华为云等的主机

【1024 程序员】我劝你赶紧去免费领一个 AWS、华为云等的主机 每年 10 月 24 日,程序员们都会迎来...
多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞定

多服务器管理神器 Nexterm 横空出世!NAS/Win/Linux 通吃,SSH/VNC/RDP 一站式搞...
星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛 NAS 硬件 03:五盘位 +N5105+ 双网口的成品 NAS 值得入手吗 前言 大家好,我...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

星哥带你玩飞牛NAS-16:不再错过公众号更新,飞牛NAS搭建RSS

  星哥带你玩飞牛 NAS-16:不再错过公众号更新,飞牛 NAS 搭建 RSS 对于经常关注多个微...
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...
颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

  颠覆 AI 开发效率!开源工具一站式管控 30+ 大模型 ApiKey,秘钥付费 + 负载均衡全...
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...
如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装 2026 年最强个人助理 ClawdBot、完整安装教程 一、前言 学不完,根本学不完!近期,一款名...