美文网首页高性能MySQL程序员
MySQL查询缓存命令大全

MySQL查询缓存命令大全

作者: 码西西 | 来源:发表于2017-08-25 03:21 被阅读71次

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:查询缓存累计命中次数
*/

相关文章

  • MySQL查询缓存命令大全

    MySQL查询缓存功能对一条SQL查询语句第一次执行时,会将其结果缓存起来。以后执行同一条语查询句时(SQL字符串...

  • MySQL学习——查询缓存

    MySQL查询缓存简介 MySQL查询缓存是MySQL将查询返回的完整结果保存在缓存中。当查询命中该缓存,MySQ...

  • (8)MySQL性能优化的最佳21条经验(未完待续)

    1.为查询缓存优化你的查询 某些查询语句会让MySQL不使用缓存。 MySQL的查询缓存对这个函数不起作用。像...

  • MySQL数据库性能优化

    MySQL架构 查询缓存 查询缓存(Query Cache)原理: 缓存SELECT操作或预处理查询的结果集和SQ...

  • 查询缓存

    查询缓存原理 mysql查询缓存保存完整的查询结果,当查询命中缓存时,立刻返回结果,跳过了解析,优化和执行阶段。 ...

  • Mysql查询优化

    查询缓存 1.可以使用如下的语句来判断MySQL是否开启了查询缓存功能: 2.如果想查看MySQL是否是读取的缓存...

  • mysql查询缓存

    MySQL 的查询缓存是MySQL 内置的一种缓存机制,可以针对 sql 进行缓存。 1.query_caceh_...

  • MySQL查询性能优化总结

    MySQL查询性能优化总结 查询执行路径 客户端发送一条查询给MySQL服务器 服务器先检查缓存,如果命中了缓存,...

  • MySQL查询缓存

    简介: mysql通过查询缓存优化来优化查询效率,当执行相同的一条sql时,mysql会将数据缓存起来以供下...

  • Mysql 查询优化

    如果查询缓存有命中的查询结果,查询语句就可以直接去查询缓存中取数据。缓存在第一次查询后,MySQL便将查询语句以及...

网友评论

    本文标题:MySQL查询缓存命令大全

    本文链接:https://www.haomeiwen.com/subject/cmiydxtx.html