龙空技术网

MySQL数据库之SQL语句缓存

寒笛过霜天 115

前言:

目前咱们对“mysql怎么清除缓存啊”大概比较注重,小伙伴们都需要知道一些“mysql怎么清除缓存啊”的相关内容。那么小编同时在网摘上汇集了一些对于“mysql怎么清除缓存啊””的相关文章,希望姐妹们能喜欢,姐妹们快快来了解一下吧!

SQL语句缓存

在MySQL中, 如果你发现你的SQL语句已经优化到极致了, 无法再优化了。但是这个时候, 其查询速度还是比较慢, 就可以考虑使用SQL语句的缓存功能!

① 执行SQL语句读取数据 ② 把本条SQL语句以及查询的结果进行缓存 ③ 第二次访问同一条SQL语句时,系统会自动调用 ② 中缓存的数据!

1) 查看MySQL是否支持SQL语句缓存

mysql> show variables like 'have_query_cache';

+------------------+-------+

| Variable_name | Value |

+------------------+-------+

| have_query_cache | YES |

+------------------+-------+

1 row in set (0.08 sec)

2) 设置缓存空间大小

mysql> set global query_cache_size = 64*1024*1024;

Query OK, 0 rows affected (0.08 sec)

3) 执行SQL语句(缓存数据)

第一次查询

mysql> select * from t_article where id = 8000000;

+---------+----------------------------------+------------+

| id | title | addtime |

+---------+----------------------------------+------------+

| 8000000 | 202025894a8c11e6945c08606e08083c | 2002-11-17 |

+---------+----------------------------------+------------+

1 row in set (1.26 sec)

第二次查询

mysql> select * from t_article where id = 8000000;

+---------+----------------------------------+------------+

| id | title | addtime |

+---------+----------------------------------+------------+

| 8000000 | 202025894a8c11e6945c08606e08083c | 2002-11-17 |

+---------+----------------------------------+------------+

1 row in set (0.00 sec)

4)缓存注意事项

缓存失效: 数据表内容发生变动后

清空缓存:

mysql> reset query cache;

Query OK, 0 rows affected (0.00 sec)

不缓存: select sql_no_cache * from 表名

mysql> select sql_no_cache * from t_article where id = 8000000;

+---------+----------------------------------+------------+

| id | title | addtime |

+---------+----------------------------------+------------+

| 8000000 | 202025894a8c11e6945c08606e08083c | 2002-11-17 |

+---------+----------------------------------+------------+

1 row in set (1.25 sec)

缓存注意:sql语句大小写、多余空格(严格区分大小写与空格)

也就是是第一次查询和第二次查询大小写、空格一致, 否则第二次读取不到缓存

如果是动态条件, 当前时间, 随机数, 是读取不到缓存

第一次查询语句

mysql> SELECT * FROM t_article where id = 800000;

+--------+----------------------------------+------------+

| id | title | addtime |

+--------+----------------------------------+------------+

| 800000 | bd2c4c484a8b11e6945c08606e08083c | 2004-04-04 |

+--------+----------------------------------+------------+

1 row in set (1.26 sec)

第二次查询语句

mysql> select * from t_article where id = 800000;

+--------+----------------------------------+------------+

| id | title | addtime |

+--------+----------------------------------+------------+

| 800000 | bd2c4c484a8b11e6945c08606e08083c | 2004-04-04 |

+--------+----------------------------------+------------+

1 row in set (1.25 sec)

由此可知, 第一次和第二次查询语句要求一致(大小写, 空格), 否则缓存起不到优化作用

标签: #mysql怎么清除缓存啊 #清理mysql缓存