首页/数据/数据库速查/表缓存与打开文件数(table_open_cache)
本包目录(495 条)
MySQL 基础与连接36 条SQL 语法52 条用户与权限21 条备份与恢复56 条主从复制与高可用53 条
性能与调优57 条
Redis 命令96 条Redis 运维与场景124 条

表缓存与打开文件数(table_open_cache)

缓存已打开表定义与文件句柄;Opened_tables 持续快速增长说明缓存不够或存在大量临时表,配合 open_files_limit 一起调。

数据库速查数据更新于 2026-10-12

状态与调整

状态与调整
SHOW STATUS LIKE 'Open%';
SHOW STATUS LIKE 'Opened_tables';
SHOW VARIABLES LIKE 'table_open_cache';
SHOW VARIABLES LIKE 'table_definition_cache';
SHOW VARIABLES LIKE 'open_files_limit';
SET GLOBAL table_open_cache = 4000;
Open_tables当前打开的表数
Opened_tables累计打开次数(看增速)
open_files_limit受 systemd LimitNOFILE 影响
*nix 上 open_files_limit 常被 systemd 的 LimitNOFILE 卡住,调大 table_open_cache 前先确认上限,否则表面生效实际受限。

易错点

  • 只调 table_open_cache 不调 table_definition_cache:字典缓存不够同样反复打开
  • 分库分表几千张表时不评估文件句柄上限,运行中报 too many open files

数据来源与参考

  • MySQL 8.0 Reference Manual: table_open_cache

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌