我的mysql中数据库的表类型都是innodb类型的,最近看了一些文章上说key_buffer_size只作用于myisam表,如果没有myisam表,是不是可以将该值设置的小一些呢

解决方案 »

  1.   

    能不能详细解释一下原因,我想知道key_buffer_size这个参数的作用,innodb根本就不会用到这个参数嘛?如果我设置了key_buffer_size=100M,那么系统会分配内存嘛?
      

  2.   

    key_buffer_sizekey_buffer_size指定索引缓冲区的大小,它决定索引处理的速度,尤其是索引读的速度。通过检查状态值Key_read_requests和Key_reads,可以知道key_buffer_size设置是否合理。比例key_reads / key_read_requests应该尽可能的低,至少是1:100,1:1000更好(上述状态值可以使用SHOW STATUS LIKE ‘key_read%’获得)。key_buffer_size只对MyISAM表起作用。即使你不使用MyISAM表,但是内部的临时磁盘表是MyISAM表,也要使用该值。可以使用检查状态值created_tmp_disk_tables得知详情。对于1G内存的机器,如果不使用MyISAM表,推荐值是16M(8-64M)。