Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1096056
  • 博文数量: 170
  • 博客积分: 1603
  • 博客等级: 上尉
  • 技术积分: 1897
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-09 15:54
文章分类

全部博文(170)

文章存档

2016年(27)

2015年(21)

2014年(27)

2013年(21)

2012年(7)

2011年(67)

我的朋友

分类: Mysql/postgreSQL

2011-04-27 16:31:13

show status like '%qcache%';
+-------------------------+----------+
| Variable_name           | Value    |
+-------------------------+----------+
| Qcache_free_blocks      | 265      | 缓存中相邻内存块的个数。数目大说明可能有碎片。FLUSH QUERY CACHE会对缓存中的碎片进行整理,从而得到一个空闲块。
| Qcache_free_memory      | 65187184 | 缓存中的空闲内存。
| Qcache_hits             | 3764     | 每次查询在缓存中命中时就增大。
| Qcache_inserts          | 153030   | 每次插入一个查询时就增大。命中次数除以插入次数就是不中比率。
| Qcache_lowmem_prunes    | 0        | 缓存出现内存不足并且必须要进行清理以便为更多查询提供空间的次数。
| Qcache_not_cached       | 98179    | 不适合进行缓存的查询的数量,通常是由于这些查询不是 SELECT 语句或者用了now()之类的函数。
| Qcache_queries_in_cache | 1112     | 当前缓存的查询(和响应)的数量。
| Qcache_total_blocks     | 2520     | 缓存中块的数数量
+-------------------------+----------+

show variables like 'quer%';
+------------------------------+----------+
| Variable_name                | Value    |
+------------------------------+----------+
| query_alloc_block_size       | 8192     | 为查询分析和执行过程中创建的对象分配的内存块大小。如果内存分段过程中遇到问题,将该变量增加一位会有帮助。
| query_cache_limit            | 1048576  | 超过此大小的查询将不缓存(单位字节,这里是1M)
| query_cache_min_res_unit     | 4096     | 查询缓存分配的最小块的大小,默认4K,如果你有大量返回小结果数据的查询,默认数据块大小可能会导致内存碎片,显示为大量空闲内存块。由于缺少内存,内存碎片会强制查询缓存从缓存内存中修整(删除)查询。这时,你应该减少query_cache_min_res_unit变量的值。空闲块和由于修整而移出的查询的数量通过Qcache_free_blocks和Qcache_lowmem_prunes变量的值给出。
| query_cache_size             | 67108864 | 查询缓存总内存占用
| query_cache_type             | ON       | 0或OFF,不使用缓存。1或者ON ,缓存除了以SELECT SQL_NO_CACHE开头的所有查询结果。2或DEMAND,只缓存以SELECT SQL_NO_CACHE开头的查询结果。
| query_cache_wlock_invalidate | OFF      | 一般情况,当客户端对MyISAM表进行WRITE锁定时,如果查询结果位于查询缓存中,则其它客户端未被锁定,可以对该表进行查询。将该变量设置为1,则可以对表进行WRITE锁定,使查询缓存内所有对该表进行的查询变得非法。这样当锁定生效时,可以强制其它试图访问表的客户端来等待。
| query_prealloc_size          | 8192     | 查询分析器缓存大小,用于查询分析和执行的固定缓冲区的大小。在查询之间该缓冲区不释放。如果你执行复杂查询,分配更大的query_prealloc_size值可以帮助提高性能,因为它可以降低查询过程中服务器分配内存的需求。
+------------------------------+----------+


优化提示:
如果Qcache_lowmem_prunes 值比较大,表示查询缓存区大小设置太小,需要增大。
如果Qcache_free_blocks 较多,表示内存碎片较多,需要清理,flush query cache
根据我看的 《High Performance MySQL》中所述,关于query_cache_min_res_unit大小的调优
,书中给出了一个计算公式,可以供调优设置参考:
query_cache_min_res_unit = (query_cache_size - Qcache_free_memory) / Qcache_queries_in_cache


show variables like '%quer%';
+-------------------------------+------------------------------------------+
| Variable_name                 | Value                                    |
+-------------------------------+------------------------------------------+
| ft_query_expansion_limit      | 20                                       | 使用WITH QUERY EXPANSION进行全文搜索的最大匹配数
| log_queries_not_using_indexes | OFF                                      | 是否将没有使用索引的sql写到slow_log上面去
| log_slow_queries              | OFF                                      | 注意log_slow_querys参数已经废弃,和下面参数一个意思(my.cf中log_slow_queries=slow_queries)
| slow_query_log                | OFF                                      | 是否打开慢查询日志
| slow_query_log_file           | /usr/local/mysql/data/localhost-slow.log | 慢查询日志的位置
+-------------------------------+------------------------------------------+

阅读(1110) | 评论(0) | 转发(0) |
0

上一篇:MyISAM表的主要参数

下一篇:Mysql 常用参数

给主人留下些什么吧!~~