技术开发 频道

浅谈MySQL数据库优化

4 MYSQL高速缓存管理

查询缓存存储SELECT查询的sql脚本以及发送给客户端的相应结果。如果随后收到一个相同的查询,服务器从查询缓存中重新得到查询结果,而不再需要解析和执行查询。通过在configure中使用--without-query-cache选项,可以从服务器中彻底去除查询缓存能力。

查询解析之前进行比较,因此下面的两个查询被查询缓存认为是不相同的:

SELECT * FROM tbl_name Select * from tbl_name

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

如果一个表被更改了,那么使用那个表的所有缓冲查询将不再有效,并且从缓冲区中移出。这包括那些映射到改变了的表的使用MERGE表的查询。一个表可以被许多类型的语句更改,例如INSERT、UPDATE、DELETE、TRUNCATE、ALTER TABLE、DROP TABLE或DROP DATABASE。

查询高速缓存的大小

mysql> SHOW VARIABLES LIKE 'query_cache_size'; +------------------+----------+ | Variable_name | Value | +------------------+----------+ | query_cache_size | 23068672 | +------------------+----------+ 1 row in set (0.01 sec)

修改高速缓存的大小

mysql> SET GLOBAL query_cache_size = 31457280; Query OK, 0 rows affected (0.00 sec) mysql> SHOW VARIABLES LIKE 'query_cache_size'; +------------------+----------+ | Variable_name | Value | +------------------+----------+ | query_cache_size | 31457280 | +------------------+----------+ 1 row in set (0.00 sec)


0
相关文章