key_buffer_size = 384M
  # key_buffer_size指定用于索引的缓冲区大小,增加它可得到更好处理的索引(对所有读和多重写),到你能负担得起那样多。如果你使它太大,系统将开始换页并且真的变慢了。对于内存在4GB左右的服务器该参数可设置为384M或512M。通过检查状态值Key_read_requests和Key_reads,可以知道key_buffer_size设置是否合理。比例key_reads / key_read_requests应该尽可能的低,至少是1:100,1:1000更好(上述状态值可以使用SHOW STATUS LIKE ‘key_read%’获得)。注意:该参数值设置的过大反而会是服务器整体效率降低!
为什么Key_reads / Key_read_requests 需要在1:1000比较好呢?有啥理论根据?还有一个问题,问下,我的mysql数据库服务器内存8G,key_buffer_size为1384M。全为myisam存储引擎。Key_reads / Key_read_requests 为 5240855/10785808954;
比率为0.0005 比1/1000小啊。这个算整体性能最佳吗?

解决方案 »

  1.   

    你需要先了解 这两个状态参数的意义Key_read_requests 

    The number of requests to read a key block from the cache. Key_reads The number of physical reads of a key block from disk. If Key_reads is large, then your key_buffer_size value is probably too small. The cache miss rate can be calculated as Key_reads/Key_read_requests. 显然,如果过多的请求是从磁盘上读,则效率会比较差,这时需要扩大你的缓存。 至少 1:100则是经验值,百分之一的非命中率 (99%的命中率)在当前的设计中是个基本的要求。