首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 表快取監控:Open_tables、Opened_tables、table_open_cache 調優實戰

     編輯:MySQL 資料庫相關知識

核心狀態變數

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

變數含義

  • Open_tables:目前開啟中的表數量。
  • Opened_tables:歷史累計開啟表次數(含快取未命中需重新開啟)。

健康度指標

-- 快取命中率
Open_tables / Opened_tables * 100%  -- 建議 >= 85%

-- 快取使用率
Open_tables / table_open_cache * 100%  -- 建議 70%~90%

配置檢視

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

MySQL 5.1.3 前參數名為 `table_cache`,之後統一為 `table_open_cache`。

調優策略

現象原因對策
Opened_tables 快速增長table_open_cache 過小,頻繁開啟/關閉表調大 table_open_cache (如 2048→4096)
Open_tables 接近上限快取池滿,新表需淘汰舊表調大上限,或檢查是否有大量臨時表
命中率 < 85%快取不足或表存取模式極度分散調大快取、合併低頻表、拆分熱點表

系統層面限制

`table_open_cache` 實際上限受限於 `open_files_limit`(每表約需 2~3 個檔案描述符:.frm, .MYD, .MYI 或 .ibd)。調大前請確認 `ulimit -n` 與 `open_files_limit` 足夠。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved