2013-01-25 59 views
1

我想知道是否有辦法減少mysql中打開的文件。Mysql減少打開的文件

詳情:

  • 的MySQL 5.0.92

  • 引擎使用:MyISAM數據

  • SHOW全球地位LIKE 'opened_tables的':150K

  • SHOW VARIABLES LIKE「%打開%':

    open_files_limit 200000 
        table_open_cache 40000 
    

解決方案的嘗試:

  • 重啓服務器:它的工作打開的表計數器爲0,但是這是不是從我的POV一個很好的解決方案,因爲你每星期需要重新啓動,因爲計數器將快速增長

  • FLUSH TABLES:像MySQL的文檔說應該強制所有表格中使用關閉,但這種情況不會發生

對此有何想法?

回答

4

一般來說,許多開放表格都不用擔心。如果你接近極限的操作系統,你可以增加內核設置這個限制:

How do I change the number of open files limit in Linux?

的MySQL打開表爲每個會話獨立有更好的併發性。

table_open_cacheMAX_CONNECTIONS系統變量影響服務器保持打開的文件的最大數量。如果您增加這些值中的一個或兩個,則可能會遇到操作系統對每個進程打開的文件描述符數量施加的限制。許多操作系統允許您增加打開文件的限制,但方法在系統之間差別很大。

具體而言,這是這裏

http://dev.mysql.com/doc/refman/5.5/en/table-cache.html

編輯解釋

要驗證你的假設,你可以通過SET GLOBAL table_open_cache := newValue降低max_connectionstable_open_cache暫時的。

該值可以動態調整,無需重新啓動服務器。

以前的MySQL 5。1這個變量被稱爲table_cache

我想告訴的是,減少這個值可能會對性能產生負面影響,因爲併發讀取的可能性較小(隊列獲取時間較長),您應該嘗試增加操作系統的限制和增加max_open_files,但也許我只是沒有看到這裏的意思

+0

Thx爲你的輸入Michel。是的,我知道一個表可以通過併發連接多次打開,但我的主要問題在於,我認爲服務器上的I/O嚴重受損,因爲mysql有很多打開的文件。這是我的假設,可能無效。 – Stephan

+0

驗證您可以通過SET GLOBAL table_open_cache:newValue臨時減少max_connections和table_open_cache。之前的MySQL 5.1這個變量被稱爲[table_cache](http://dev.mysql.com/doc/refman/5.0/en/server-system-variables.html#sysvar_table_cache)該值可以動態調整,無需重啓服務器 –

+0

是的,我會嘗試。另外關於你的建議增加限制,我們已經有open_files_limit = 200k,它還沒有達到。 – Stephan