MySQL性能优化配置参数之thread_cache和table_cache详解

2019-01-05 10:14:23刘景俊

如果你正用 HANDLER tbl_name OPEN语句打开一个表,将为该线程专门分配一个表。该表不被其它线程共享,只有线程调用HANDLER tbl_name CLOSE或线程终止后才被关闭。表关闭后,被拉回表缓存中(如果缓存不满)。

mysql手册上给的建议大小 是:table_cache=max_connections*n

n表示查询语句中最大表数, 还需要为临时表和文件保留一些额外的文件描述符。

这个数据遭到很多质疑,table_cache够用就好,检查 Opened_tables值,如果这个值很大,或增长很快那么你就得考虑加大table_cache了.

在下面的条件下,未使用的表 将被关闭并从表缓存中移出:

当缓存满了并且一个线程试图打开一个不在缓存中的表时。

当缓存包含超过table_cache个条目,并且缓存中的表不再被任何线程使用。

当表刷新操作发生。当执行FLUSH TABLES语句或执行mysqladmin flush-tables或mysqladmin refresh命令时会发生。

当表缓存满时,服务器使用下列过程找到一个缓存入口来使用:

当前未使用的表被释放,以最近最少使用顺序。

如果缓存满了并且没有表可以释放,但是一个新表需要打开,缓存必须临时被扩大。

如果缓存处于一个临时扩大状态并且一个表从在用变为不在用状态,它被关闭并从缓存中释放。

几个关于table_cache的 状态值:

1. table_cache:所有线程打开的表的数目。增大该值可以增加mysqld需要的文件描述符的数量。默认值是64.

2. open_tables:当前打开的表的数量.

3. opened_tables :Number of table cache misses,如果opened_tables较大,table_cache 值可能太小.

4. Open_table_definitions : The number of cached .frm files. This variable was added in MySQL 5.1.3.

5. Opened_table_definitions : The number of .frm files that have been cached. This variable was added in MySQL 5.1.24.

您可能感兴趣的文章:

MySQL 性能优化的最佳20多条经验分享MySQL数据库引擎介绍、区别、创建和性能测试的深入分析MySQL性能优化之max_connections配置参数浅析浅析Mysql Join语法以及性能优化MYSQL性能优化分享(分库分表)可以改善mysql性能的InnoDB配置参数MySQL实现批量插入以优化性能的教程MySQL性能优化之路---修改配置文件my.cnfMySQL性能设置MySQL配置文件my.cnf中文详解附mysql性能优化方法分享大幅优化MySQL查询性能的奇技淫巧MySQL查询随机数据的4种方法和性能对比MySQL性能优化之table_cache配置参数浅析mysql服务性能优化—my.cnf_my.ini配置说明详解(16G内存)mysql性能优化之索引优化MySQL性能分析工具profile使用教程从MySQL得到最大的优化性能MySQL性能全面优化方法参考,从CPU,文件系统选择到mysql.cnf参数优化