栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MySQL的缓存使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MySQL的缓存使用

MySQL的缓存功能,在开启时,执行相同的SQL查询语句时,会直接中获取结果集返回,当数据被修改,删除,新增等操作后, 缓存被清除.

1 MySQL语句执行的流程

1 客户端向服务端发起查询, 将查询SQL发给MySQL服务器.

2 服务器先查看缓存中是否存在,缓存命中,则直接返回.

3 服务器进行SQL解析,预处理,再由优化器生成对应的执行计划.

4 MySQL根据执行计划,调用相应的存储引擎API来执行查询.

5 将结果返回给客户端.

2 MySQL常见缓存参数

以本地MySQL数据库为例, 使用navicat连接工具,或者命令行连接mysql

1 查看数据库是否有缓存功能
show variables like 'have_query_cache';

2 查看数据库是否开启缓存功能
show variables like 'query_cache_type';

3 查看缓存的大小
show variables like 'query_cache_size';

4 查看缓存的常见变量
-- %表示模糊查询
show status like 'Qcache%';

参数含义
Qcache_free_blocks缓存的可用内存块数
Qcache_free_memory缓存的可用内存量
Qcache_hits缓存命中数
Qcache_inserts缓存的查询数
Qcache_lowmen_prunes因内存不足而从查询缓存中删除的查询数
Qcache_not_cached非缓存查询的数量
Qcache_queries_in_cache缓存中注册的查询数
Qcache_total_blocks缓存中的块总数
3 测试缓存查询

新建一个user表对象:

-- 创建user表
CREATE TABLE `user` (
  `id` bigint(20) NOT NULL COMMENT '主键ID',
  `name` varchar(30) DEFAULT NULL COMMENT '姓名',
  `age` int(11) DEFAULT NULL COMMENT '年龄',
  `email` varchar(50) DEFAULT NULL COMMENT '邮箱',
  PRIMARY KEY (`id`),
  KEY `index_age` (`age`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- 添加数据
INSERT INTO `test`.`user`(`id`, `name`, `age`, `email`) VALUES (1, 'Jone', 1, 'test1@baomidou.com');
INSERT INTO `test`.`user`(`id`, `name`, `age`, `email`) VALUES (2, 'Jack', 20, '5%st2@baomidou.com');
INSERT INTO `test`.`user`(`id`, `name`, `age`, `email`) VALUES (3, 'Tom', 28, '5est3@baomidou.com');
INSERT INTO `test`.`user`(`id`, `name`, `age`, `email`) VALUES (4, 'Sandy', 21, '5$1111@qq.com');


再次查看,发现直接从缓存中获取.

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/294103.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号