table_cache – MySQL性能调优
2015-09-01 16:15
441 查看
table_cache是一个非常重要的MySQL性能参数,它在5.1.3之后的版本中叫做table_open_cache。table_cache主要用于设置table高速缓存的数量。由于每个客户端连接都会至少访问一个表,因此此参数的值与max_connections有关。
在执行缓存操作之前,table_cache用于限制缓存表的最大数目:如果当前已经缓存的表未达到table_cache,则会将新表添加进来;若已经达到此值,MySQL将根据缓存表的最后查询时间、查询率等规则释放之前的缓存。
mysql> show global status like 'open%_tables';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Open_tables | 2 |
| Opened_tables | 15 |
+---------------+-------+
2 rows in set (0.00 sec)
来查看这两个参数的值。其中Open_tables是当前正在打开表的数量,Opened_tables是所有已经打开表的数量。
如果Open_tables的值已经接近table_cache的值,且Opened_tables还在不断变大,则说明mysql正在将缓存的表释放以容纳新的表,此时可能需要加大table_cache的值。对于大多数情况,
比较适合的值:
Open_tables / Opened_tables >= 0.85
Open_tables / table_cache <= 0.95
如果对此参数的把握不是很准,VPS管理百科给出一个很保守的设置建议:把MySQL数据库放在生产环境中试运行一段时间,然后把参数的值调整得比Opened_tables的数值大一些,并且保证在比较高负载的极端条件下依然比Opened_tables略大。
命令将会清空当前所有缓存的表。
缓存机制
当某一连接访问一个表时,MySQL会检查当前已缓存表的数量。如果该表已经在缓存中打开,则会直接访问缓存中的表已加快查询速度;如果该表未被缓存,则会将当前的表添加进缓存并进行查询。在执行缓存操作之前,table_cache用于限制缓存表的最大数目:如果当前已经缓存的表未达到table_cache,则会将新表添加进来;若已经达到此值,MySQL将根据缓存表的最后查询时间、查询率等规则释放之前的缓存。
参数调优
一般来说,可以在phpmyadmin中查看Open_tables与Opened_tables的值,也可以执行1 | mysql> show global status like 'open%_tables'; |
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Open_tables | 2 |
| Opened_tables | 15 |
+---------------+-------+
2 rows in set (0.00 sec)
来查看这两个参数的值。其中Open_tables是当前正在打开表的数量,Opened_tables是所有已经打开表的数量。
如果Open_tables的值已经接近table_cache的值,且Opened_tables还在不断变大,则说明mysql正在将缓存的表释放以容纳新的表,此时可能需要加大table_cache的值。对于大多数情况,
比较适合的值:
Open_tables / Opened_tables >= 0.85
Open_tables / table_cache <= 0.95
如果对此参数的把握不是很准,VPS管理百科给出一个很保守的设置建议:把MySQL数据库放在生产环境中试运行一段时间,然后把参数的值调整得比Opened_tables的数值大一些,并且保证在比较高负载的极端条件下依然比Opened_tables略大。
清空缓存
执行1 | mysql > flush tables; |
相关文章推荐
- table_cache – MySQL性能调优
- table_cache – MySQL性能调优
- mysql错误: waiting for table metadata lock
- mysql 基本SQL语句
- mysql 自增字段的设置
- MyBatis传入多个参数的问题
- mysql MVCC
- Mysql服务
- 设置Mysql密码
- Mysql的存储引擎之:CSV存储引擎
- mysql中engine=innodb和engine=myisam的区别
- MySQL存储过程之异常处理
- mysql grant 用户权限总结
- mysql建索引要注意了
- MySql之慢查询
- MySQL 一些让人容易忽视的知识点
- mysql 全局变量和SESSION变量
- mysql分表的3种方法
- mysql数据库优化五步走
- mysql 自定义函数