bayaim_mysql5.6下table_open_cache參數

bayaim_mysql5.6下table_open_cache參數_2017年12月26日10:51:58

原創 做者:bayaim 時間:2017-12-26 10:57:17 0刪除編輯
(若是你作件事,想瘋子似得,那你必定能成功,你想和別人一樣的時間和精力還想超越別人,除非你是超人。但一般你我都是凡人。)
                                                                                                                                                --bayaim 2017年12月26日10:55:04
mysql5.6下table_open_cache參數   < 如下內容純屬抄襲,愛看不看>

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
單位: M
       table_open_cache指定表高速緩存的大小。每當MySQL訪問一個表時,若是在表緩衝區中還有空間,該表就被打開並放入其中,這樣能夠更快地訪問表內容。
  經過檢查峯值時間的狀態值Open_tables和Opened_tables,能夠決定是否須要增長table_open_cache的值。若是你發現open_tables等於table_open_cache,而且opened_tables在不斷增加, 那麼你就須要增長table_open_cache的值了(上述狀態值可:SHOW STATUS LIKE ‘Open%tables’得到)。
注意,不能盲目地把table_open_cache設置成很大的值。若是設置得過高,可能會形成文件描述符不足,從而形成性能不穩定或者鏈接失敗。

測試環境:內存4G  數據庫MySQL5.6系統配置文件/etc/my.cnf中table_open_cache=512,監測table_open_cache設置是否合理,是否須要優化。

查詢LINUX 內存大小:
[root@oradata ~]# free -m
             total       used       free     shared    buffers     cached
Mem:         64508      64251        257          0        274      61507
-/+ buffers/cache:       2469      62039
Swap:        32255        304      31951
[root@oradata ~]# cat /proc/meminfo

1、多大算合適 :

mysql> show variables like '%table_open_cache%';
+----------------------------+-------+
| Variable_name              | Value |
+----------------------------+-------+
| table_open_cache           | 2000  |
| table_open_cache_instances | 1     |
+----------------------------+-------+
2 rows in set (0.00 sec)

mysql> show status like 'open%tables';
看如下幾個值:
| Variable_name            | Value  |
+--------------------------+--------+
| Open_tables              | 512    |
| Opened_tables            | 0      |
+--------------------------+--------+


發現open_tables等於table_open_cache,也是512
代表須要增長table_open_cache的值,可設爲:table_open_cache=1024


發現open_tables等於table_open_cache,都是512,說明mysql正在將緩存的表釋放以容納新的表,此時可能須要加大table_open_cache的值,4G內存的機器,建議設置爲2048
比較適合的值:
Open_tables / Opened_tables >= 0.85
Open_tables / table_open_cache <= 0.95
若是對此參數的把握不是很準,有個很保守的設置建議:把MySQL數據庫放在生產環境中試運行一段時間,而後把參數的值調整得比Opened_tables的數值大一些,而且保證在比較高負載的極端條件下依然比Opened_tables略大。

2、如何修改
mysql> set global table_open_cache=1024;
Query OK, 0 rows affected (0.00 sec)
設置後能夠觀察一下,若是opening table再也不怎麼出現,說明此修改是有效的,將其添加到mysql的配置文件,這樣數據庫重啓後仍可保留此設置。

vi /etc/my.cnf 配置文件,[mysqld] 下 
table_open_cache=1024

別忘了需mysql重啓 service mysql restart 或 /etc/rc.d/init.d/mysql restart 後才生效!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
相關文章
相關標籤/搜索