单表goods,260w数据(数据还在增加),key_buffer_size目前为8mb,感觉好像少了
服务器内存2G,key_buffer_size大概设置多少比较合适
key_reads,key_read_requests 用show variables;没看到

解决方案 »

  1.   

    mysql> show status like '%key_read%';
    +-------------------+-------+
    | Variable_name     | Value |
    +-------------------+-------+
    | Key_read_requests | 0     | 
    | Key_reads         | 0     | 
    +-------------------+-------+
    2 rows in set (0.00 sec)mysql> 
      

  2.   

    key_buffer_size是针对存储引擎myisam的,所以,先确定你的表用什么存储引擎
      

  3.   

    key_buffer_size是全局共享内存参数,你说的你某个表记录大,因为这个存储是存放索引数据的,所以,你用以下命令看看你的索引多大,然后来灵活设置:
    mysql> show table status like 'tb_yes'\G
    *************************** 1. row ***************************
               Name: tb_yes
             Engine: MyISAM
            Version: 10
         Row_format: Fixed
               Rows: 1
     Avg_row_length: 7
        Data_length: 7
    Max_data_length: 1970324836974591
       Index_length: 1024
          Data_free: 0
     Auto_increment: NULL
        Create_time: 2009-11-16 16:40:33
        Update_time: 2009-11-16 16:40:46
         Check_time: NULL
          Collation: latin1_swedish_ci
           Checksum: NULL
     Create_options: 
            Comment: 
    1 row in set (0.00 sec)mysql> 
      

  4.   

    myiasmmysql> show table status like 'tb_goods'\G;
    *************************** 1. row ***************************
               Name: tb_goods
             Engine: MyISAM
            Version: 10
         Row_format: Dynamic
               Rows: 2602290
     Avg_row_length: 10563
        Data_length: 27489561580
    Max_data_length: 281474976710655
       Index_length: 213012480
          Data_free: 0
     Auto_increment: NULL
        Create_time: 2009-11-15 15:17:05
        Update_time: 2009-11-17 14:04:13
         Check_time: 2009-11-15 17:19:48
          Collation: utf8_general_ci
           Checksum: NULL
     Create_options: 
            Comment: 
    1 row in set (0.00 sec)
      

  5.   

    转:
    key_buffer_sizeO表示索引缓冲区的大小,严格说是它决定了数据库索引处理的速度,尤其是索引读的速度。根据网络一些高手写的文章表示可以检查状态值Key_read_requests和Key_reads,即可知道key_buffer_size设置是否合理。比例key_reads / key_read_requests应该尽可能的低,至少是1:100,1:1000更好,虽然我还没有找到理论的依据,但是,我在自己维护的几台实际运行良好的库做过的测试后表明,这个比值接近1:20000,这从结果证明了他们说这话的正确性,我们不妨用之。
      

  6.   


    mysql> show status like '%key_read%';
    +-------------------+-------------+
    | Variable_name     | Value       |
    +-------------------+-------------+
    | Key_read_requests | 13012196583 | 
    | Key_reads         | 824810280   | 
    +-------------------+-------------+
    2 rows in set (0.00 sec)
    昏,我这里的比是1:15.78是key_buffer_size太小了吧?
      

  7.   


    你要知道key_buffer_size里面是放什么的,所以,意味着里面不单单是存放你这个表的索引了,从上面的信息看来,你单是这个表的索引就已经达到了200M左右了。另外,这个也不是短时间内就抓到这个准确值的,因为mysql服务刚启动时,肯定缓存里都得重新装,所以,这个效果值是运行一段时间后才能得到较好的体现。
    像这些参数都是结果实际数据情况,跟踪一段时间慢慢分析调整达到最优效果的。