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表,推荐值是16M(8-64M)。
临时表空间大小:order by和group by时把数据放到临时表里。
tmp_table_size 占的是内存的大小,如果太小在排序时会出错
created_tmp_tables 创建临时表的数量
max_tmp_tables=32
tmpdir=/tmp 硬盘上临时表所在的位置
收藏
举报
TAG: