我已经把table_open_cache加到了800但还是不如人意,还应该往上加吗?
version:mysql-5.1.40
windows server 2003
max_connections=1000
engine=innodb
mysql> show global status like 'open%tables%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Open_tables   | 60    |
| Opened_tables | 4560  |
+---------------+-------+
2 rows in set (0.00 sec)mysql> show variables like 'table_open_cache';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| table_open_cache | 800   |
+------------------+-------+
1 row in set (0.00 sec)
另外弱弱的问一下,Open_tables指的是当前打开表的数量,还是别的什么?

解决方案 »

  1.   

    Open_tables 当前打开的表数量。你的 "不如人意" 是指什么?
      

  2.   

    回ACMAIN_CHM老兄,我指的是,我的Opened_tables的值增长太快,按照网络上推荐的设置是
    Open_tables / Opened_tables * 100% >= 85%
    可惜我这达不到。table_open_cache设置的不理想。
      

  3.   

    Opened_tables 是你已经打开过的表。过多的话,说明打开关闭文件的开销比较大。当然也和你的MYSQL服务运行的时间有关,时间越久,当然打开过的表文件就越多。如果这个数字很大,一般是加大table_open_cache ,但你的table_open_cache 800已经不小了。检查一下你的内存利用率了。或者你是否经常做  FLUSH TABLES  ?这个操作也会导致所有表被关闭。
      

  4.   

    我的server也有这个问题Variable_name | Value
    --------------+--------
    Open_tables   | 496
    Opened_tables | 2479798不过我一个month-end有超过1000万的记录更新