首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL Table Open Cache 調優:Open_tables 與 Opened_tables 黃金比率

     編輯:MySQL 綜合教學

前言

table_open_cache(5.1.3 前稱 table_cache)控制資料表快取數量。本文介紹透過 Open_tables、Opened_tables 計算快取命中率與利用率,精準調優開啟表快取。

核心監控指標

mysql> SHOW GLOBAL STATUS LIKE 'open%tables%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Open_tables   | 919   |
| Opened_tables | 1951  |
+---------------+-------+

mysql> SHOW VARIABLES LIKE 'table_cache';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| table_cache   | 2048  |
+---------------+-------+

雙指標判讀

1. 快取命中率

命中率 = Open_tables / Opened_tables * 100%

案例:919 / 1951 ≈ 47.1% → 偏低,建議 ≥ 85%。

2. 快取利用率

利用率 = Open_tables / table_cache * 100%

案例:919 / 2048 ≈ 44.9% → 快取未滿但命中率低,可能因頻繁開啟/關閉不同表。

調優建議

現象建議動作
命中率 < 85%增加 table_open_cache
利用率 > 95% 且命中率高增加 table_open_cache
利用率低但命中率低檢查應用是否頻繁切換資料庫/表、連線池配置

動態調整

SET GLOBAL table_open_cache = 4096;

永久生效請修改 my.cnf:

[mysqld]
table_open_cache = 4096

注意事項

  • 過大的 table_open_cache 會增加檔案描述符消耗,需配合 open_files_limit 調整。
  • MySQL 5.6+ 引入 table_definition_cache 獨立快取表結構定義。

相關延伸閱讀

  • MySQL 慢查詢啟用方法
  • 兩種實現 MySQL 多表聯查的方法
  • MySQL 函數無法建立的解決方法
  • 帶您了解 MySQL 變數
  • 撤銷並刪除 MySQL 使用者的方法
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved