2023拉

浅谈MySQL查询缓存机制

上一篇 / 下一篇  2012-08-09 15:56:42 / 个人分类:MySql学习

  
   缓存机制简单的说就是缓存sql文本及查询结果,如果运行相同的sql,服务器直接从缓存中取到结果,而不需要再去解析和执行sql。如果表更改了,那么使用这个表的所有缓冲查询将不再有效,查询缓存值的相关条目被清空。

query_cache_size 使用多大内存来缓存查询语句[+8M]

mysql> show variables like'%query%'

query_cache_size=8M

[root@st mysql]# vim /etc/my.cnf 

mysql> show status like '%Qcache%';

Qcache_free_blocks:说明缓存太大了。缓存中相邻内存的个数。数目大说明可能有碎片。FLUSH QUERY CACHE会对缓存中的碎片进行整理,从而得到一个空闲块。[+8M]

Qcache_free_memory缓存中的空闲内存

Qcache_hits每次查询在缓存中命中时就增大

Qcache_inserts每插入一个查询时就增大。命中次数除以插入次数就是命中率。

Qcache_lowmen_prunes缓存出现内存不足并且必须要进行清理以便为更多查询提供空间的次数。这个数字最好长时间看;如果这个数字在不断增长就表示可能碎片非常严重,或者内存很少

Qcache_hits/Qcache_inserts 命中率

关键字缓冲区

mysql> show status like '%key%';

mysql> show variables like'key_buffer_size';

key_buffer_size  指定索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度。[+8M]

key_read_requests  请求总数

key_reads   代表命中磁盘的请求个数

(key_read_requests-key_read)/key_read_requests:命中率

key_buffer_size只对MyISAM表起作用。即使你不使用MyISAM表,但是内部的临时磁盘表是MyISAM表,也要使用该值。可以使用检查状态值created_tmp_disk_tables得知详情。

对于1G内存的机器,如果不使用MyISAM表,推荐值是16M8-64M)。

临时表空间大小:order bygroup by时把数据放到临时表里。

tmp_table_size   占的是内存的大小,如果太小在排序时会出错

created_tmp_tables  创建临时表的数量

max_tmp_tables=32

tmpdir=/tmp  硬盘上临时表所在的位置


TAG:

 

评分:0

我来说两句

Open Toolbar