table_open和table_definition瞭解

 table_open和table_definition瞭解
 
 官網5.5解釋:
 open_files_limit + table_open_cache 
 The number of open tables for all threads. Increasing this value increases the number of file 
 descriptors that mysqld requires. 
 
 --打開的表緩存數量,緩存相關表.frm文件的解析結果,加上一些其他數據(和涉及的引擎有關係),如MyISAM,表的數據和
 
 索引的文件描述符。
 
 打開的表(session級別)是每個線程,每個表使用,但表定義(global)是全局的,可以被所有連接有效的共享.
 
 注意,狀態參數,Opened_tables很大或在增長,可能表緩存不夠大,可以增加table_open_cache,但是,如果經常
 
 需要創建和刪除臨時表,也會導致該參數值不停的增長.
 
 如果遇到MySQL無法打開更多文件的錯誤,可能需要增加MySQL打開的文件的數量,my.cnf添加:open_files_limit.
 
 表緩存缺點:當服務器有很多MyISAM表時,可能導致關機時間較長,因關機前索引塊必須完成刷新,表都必須標示
 
 爲不再打開.
 
 表緩存優點:佔用內存不多,雖然創建一個新線程或打開一個新的表,相對其他MySQL操作代價不高,但是他們的開銷
 是會累加的,所以,緩存表有時,會提升效率. 
 
 該參數對InnoDB引擎重要性較小,不依賴它做很多事,如,文件描述符,InnoDB引擎有自己的表緩存版本(table_
 definition_cache)
 
 innodb_open_files + table_definition_cache 
 The number of table definitions (from .frm files) that can be stored in the definition cache. 
 If you use a large number of tables, you can create a large table definition cache to speed up
 opening of tables. The table definition cache takes less space and does not use file descriptors, 
 unlike the normal table cache. The minimum and default values are both 400. 
 
 --InnoDB自己的緩存,表定義緩存(數據字典)數量,當InnoDB打開一張表,就增加了一個對應的對象到數據字典,每張表
 
 佔用4KB或更多內存,但是,當表關閉的時候,不會從數據字典(內存)中移除它們。隨時間推移,可能發生OOM;另一個問題,
 
 第一次打開表時會計算統計信息,需要很多IO操作,代價高,因表的每次統計信息沒有永久緩存,每次打開表重新計算,或
 
 打開表之後,隔段時間或預訂觸發事件(改變表的內容或查詢information_schema表,等),也會重新計算統計信息.如果有
 
 很多表,服務器可能花費數小時來啓動完成預熱,這會花費更多時間在等待IO操作,不做其他事.
 
 MySQLd啓動之後,InnoDB統計操作可能對服務器和一些查詢產生衝擊.關閉:innodb_stats_on_memtadata,避免耗時的表統計
 
 信息刷新.
 
 innodb_open_files控制打開.ibd文件的數量.
 
 MyISAM打開文件方式:用表緩存來持有打開表的文件描述符.
 
 InnoDB爲每個.ibd文件使用單個,全局的文件描述符(是否開啓,innodb_file_per_table),可以適當把innodb_open_files設置
 
 大點,使服務器可以保持所有的.ibd文件同時打開.
 
 
個人觀點,綜上所述,對於MyISAM引擎,使用table_open_cache+open_files_limit;


而Innodb引擎,使用table_definition_cache+innodb_open_files; 
  
 
 參閱:
 http://www.percona.com/blog/2009/11/18/how-innodb_open_files-affects-performance/
 http://www.azumi.cc/9/97248.html
 http://www.percona.com/blog/2009/11/16/table_cache-negative-scalability/
 高性能MySQL 第3版,P347,348,349
 
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章