热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

MySQL查询缓存命令大全

MySQL查询缓存功能对一条SQL查询语句第一次执行时,会将其结果缓存起来。以后执行同一条语查询句时(SQL字符串必须完全相同),可以跳过SQL解析优化查询等阶段,直接返回缓存结果

MySQL查询缓存功能对一条SQL查询语句第一次执行时,会将其结果缓存起来。以后执行同一条语查询句时(SQL字符串必须完全相同),可以跳过SQL解析优化查询等阶段,直接返回缓存结果给用户。
如果对表进行INSERT, UPDATE, DELETE, TRUNCATE, ALTER TABLE, DROP TABLE, 或DROP DATABASE等操作时,之前的缓存会失效并且删除。这也在一定程度上会影响我们数据库的性能,所以对一些频繁的变动表的情况开启缓存是不明智的。
通常安装时默认是开启查询缓存功能的。

1. 查看当前MySQL服务器是否包含查询缓存功能

mysql> SHOW VARIABLES LIKE 'have_query_cache';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| have_query_cache | YES |
+------------------+-------+

2. 查看查询缓存开启情况

mysql> show variables like '%query_cache%';
+------------------------------+----------+
| 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 |
+------------------------------+----------+
/*
query_cache_type:
OFF(0): 关闭查询缓存。
ON(1): 除了带SELECT SQL_NO_CACHE ... 参数的查询语句都使用查询缓存。
DEMAND(2): 只有带SELECT SQL_CACHE ... 参数的查询语句才使用查询缓存。
*/

3. 开启查询缓存

/* 方法1:临时设置 */
mysql> SET GLOBAL query_cache_size = 20971520;
mysql> SET SESSION query_cache_type = DEMAND;
/*
query_cache_size: 设置缓存空间大小(字节)
*/
/* 方法2: 永久设置(MySQL配置文件)
my.cnf 或 my.ini
*/
[mysqld]
query_cache_type = DEMAND
query_cache_size = 10M

4. 查看查询缓存命中及运行情况

mysql>SELECT count(*) FROM sta_log;
+ ------------- +
| count(*) |
+ ------------- +
| 13471944 |
+ ------------- +
Query OK, 1 rows affected (6.896 sec)
...
...
...
mysql>SELECT count(*) FROM sta_log;
+ ------------- +
| count(*) |
+ ------------- +
| 13471944 |
+ ------------- +
Query OK, 1 rows affected (0.00 sec)
/* 命中缓存时,会发现查询速度明显加快 */
mysql>SHOW STATUS LIKE 'Qcache%';
+ ------------------ + ---------- +
| Variable_name | Value |
+ ------------------ + ---------- +
| Qcache_free_blocks | 1 |
| Qcache_free_memory | 20954056 |
| Qcache_hits | 12 |
| Qcache_inserts | 1 |
| Qcache_lowmem_prunes | 0 |
| Qcache_not_cached | 14 |
| Qcache_queries_in_cache | 0 |
| Qcache_total_blocks | 1 |
+ ------------------ + ---------- +
8 rows
/*
Qcache_hits:查询缓存累计命中次数
*/

推荐阅读
author-avatar
潇湘釹子_997
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有