Chinaunix首页 | 论坛 | 博客
  • 博客访问: 31449
  • 博文数量: 12
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 150
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-08 20:21
文章分类

全部博文(12)

文章存档

2011年(1)

2009年(2)

2008年(9)

我的朋友
最近访客

分类: Mysql/postgreSQL

2009-12-25 16:14:08

一 连接数
Max_used_connections / max_connections * 100% ≈ 85% 

最大连接数占上限连接数的85%左右,如果发现比例在10%以下,MySQL服务器连接数上限设置的过高了。

Key_buffer_size 32 < 2G  64< 4G 
 1, 索引未命中缓存的概率
   key_cache_miss_rate  Key_reads / Key_read_requests * 100%
key_cache_miss_rate0.1%以下都很好(每1000个请求有一个直接读硬盘),如果key_cache_miss_rate0.01%以下的话,key_buffer_size分配的过多,可以适当减少。

2key_blocks_*参数:

    Key_blocks_unused  未使用的缓存簇(blocks)

    Key_blocks_used     曾经用到的最大的blocks

    Key_blocks_unused 太小要么增加key_buffer_size,要么就是过渡索引了,把缓存占满了。比较理想的设置:

    Key_blocks_used / (Key_blocks_unused + Key_blocks_used) * 100% 80%

 

临时表

   Created_tmp_disk_tables / Created_tmp_tables * 100% <= 25%

'max_heap_table_size'= 268435456只有256MB以下的临时表才能全部放内存,超过的就会用到硬盘临时表。

 

Open Table情况

Open_tables表示打开表的数量,Opened_tables表示打开过的表数量,如果Opened_tables数量过大,说明配置中table_cache(5.1.3之后这个值叫做table_open_cache)值可能太小

比较合适的值为:

Open_tables / Opened_tables * 100% >= 85%

Open_tables / table_open_cache * 100% <= 95%

 

五、进程使用情况

  Threads_created表示创建过的线程数,如果发现Threads_created值过大的话,表明MySQL服务器一直在创建线程,这也是比较耗资源,可以适当增加配置文件中thread_cache_size.

 

查询缓存(query cache)

query_cache_min_res_unit的配置是一柄”双刃剑”,默认是4KB,设置值大对大数据查询有好处,但如果你的查询都是小数据查询,就容易造成内存碎片和浪费。

 

查询缓存碎片率 = Qcache_free_blocks / Qcache_total_blocks * 100% <=20%

 

如果查询缓存碎片率超过20%,可以用FLUSH QUERY CACHE整理缓存碎片,或者试试减小query_cache_min_res_unit,如果你的查询都是小数据量的话。

 

查询缓存利用率 = (query_cache_size - Qcache_free_memory) / query_cache_size * 100%

 

查询缓存利用率在25%以下的话说明query_cache_size设置的过大,可适当减小;查询缓存利用率在80%以上而且Qcache_lowmem_prunes > 50的话说明query_cache_size可能有点小,要不就是碎片太多。

 

查询缓存命中率 = (Qcache_hits - Qcache_inserts) / Qcache_hits * 100%

 

示例服务器 查询缓存碎片率 20.46%,查询缓存利用率 62.26%,查询缓存命中率 1.94%,命中率很差,可能写操作比较频繁吧,而且可能有些碎片。

 

、排序使用情况

 Sort_merge_passes   太大 说明Sort_buffer_size 肯小了

 

八、文件打开数(open_files)

 

    比较合适的设置:Open_files / open_files_limit * 100% <= 75

 

九,锁表

   如果Table_locks_immediate / Table_locks_waited > 5000,最好采用InnoDB引擎

 

表扫描率 Handler_read_rnd_next / Com_select < 4000

 

如果表扫描率超过4000,说明进行了太多表扫描,很有可能索引没有建好,增加read_buffer_size值会有一些好处,但最好不要超过8MB

 

Out of memory   ???

 

key_buffer_size + tmp_table_size + (read_buffer_size + sort_buffer_size + read_rnd_buffer_size +join_buffer_size )*max_connections =
阅读(837) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~