`
usenrong
  • 浏览: 515241 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

MYSQL性能优化至参数table_open_cache设置

 
阅读更多

table_cache 参数设置表高速缓存的数目。每个连接进来,都会至少打开一个表缓存。因此, table_cache 的大小应与 max_connections 的设置有关。例如,对于 200 个并行运行的连接,应该让表的缓存至少有 200 × N ,这里 N 是应用可以执行的查询的一个联接中表的最大数量。此外,还需要为临时表和文件保留一些额外的文件描述符。

 

缓存机制

当 Mysql 访问一个表时,如果该表在缓存中已经被打开,则可以直接访问缓存;如果还没有被缓存,但是在 Mysql 表缓冲区中还有空间,那么这个表就被打开并放入表缓冲区;如果表缓存满了,则会按照一定的规则将当前未用的表释放,或者临时扩大表缓存来存放,使用表缓存的好处是可以更快速地访问表中的内容。

参数调优

一般来说,可以通过查看数据库运行峰值时间的状态值 Open_tables 和 Opened_tables ,判断是否需要增加 table_cache 的值(其中 open_tables 是当前打开的表的数量, Opened_tables 则是已经打开的表的数量)。即如果open_tables接近table_cache的时候,并且Opened_tables这个值在逐步增加,那就要考虑增加这个值的大小了。还有就是Table_locks_waited比较高的时候,也需要增加table_cache。

mysql> show global status like 'open%_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的值在2G内存以下的机器中的值默认时256到 512,如果机器有4G内存,则默认这个值是2048,但这决意味着机器内存越大,这个值应该越大,因为table_cache加大后,使得mysql对 SQL响应的速度更快了,不可避免的会产生更多的死锁(dead lock),这样反而使得数据库整个一套操作慢了下来,严重影响性能。所以平时维护中还是要根据库的实际情况去作出判断,找到最适合你维护的库的 table_cache值。

清空缓存

执行

mysql >flush tables;

命令将会清空当前所有缓存的表。

分享到:
评论
1 楼 usenrong 2015-12-14  
show status like '%Qcache%';

相关推荐

    MySQL 5.6下table_open_cache参数优化合理配置详解

    MySQL 5.6 中的 `table_open_cache` 参数是一个关键的性能调优选项,它直接影响着数据库系统的响应时间和资源利用率。`table_open_cache` 以前被称为 `table_cache`,自 5.1.3 版本起进行了更名。这个参数设定的是 ...

    MySQL性能优化之Open_Table配置参数的合理配置建议

    当`Opened_tables`的值显著高于`Open_tables`时,可能表明数据库频繁地打开和关闭表,这可能是由于`table_cache`(在MySQL 5.1.3之后改为`table_open_cache`)设置过小导致的。`table_cache`参数控制了MySQL可以缓存...

    MySQL性能优化之table_cache配置参数浅析

    MySQL性能优化是一个复杂而细致的过程,其中table_cache(在5.1.3版本后改为table_open_cache)是一个关键的配置参数,对提升数据库查询效率有着显著的影响。table_cache的设置决定了MySQL服务器能够同时缓存多少个...

    mysql提示Changed limits: max_open_files: 2048 max_connections: 1910 table_cache: 64的解决

    在windows下安装Mysql系统日志出现max_open_files: 2048 max_connections: 510 table_cache: 764 类似错误是因为 max_connections 最大连接数和max_open_files、table_cache 不匹配。适当的降低max_connections 或...

    Mysql优化调优中两个重要参数table_cache和key_buffer

    本文根据作者的一点经验,讨论了Mysql服务器优化中两个非常重要的参数,分别是table_cache,key_buffer_size。 table_cache指示表高速缓存的大小。当Mysql访问一个表时,如果在Mysql表缓冲区中还有空间,那么这个表...

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

    综上所述,thread_cache和table_cache是MySQL性能优化的关键参数,它们直接关乎到数据库的连接管理和数据访问效率。通过对这些参数进行适当的调整,可以显著提升MySQL服务器的整体性能,满足高并发和大数据量场景的...

    mysql优化的重要参数 key_buffer_size table_cache

    在MySQL服务器的优化中,有两个关键参数对于提升性能至关重要,那就是`key_buffer_size`和`table_cache`。这两个参数主要针对MyISAM存储引擎,虽然现代MySQL系统更倾向于使用InnoDB引擎,但理解这些参数仍然有助于...

    mysql服务性能优化my_cnf配置说明详解16G内存[参考].pdf

    下面是一些重要的性能优化参数: * open_files_limit: 指定了 MySQL 服务器可以打开的文件描述符的数量,默认为 10240。 * back_log: 指定了 MySQL 服务器在暂时停止响应新请求之前,短时间内可以存在的请求数量,...

    mysql性能调优参数

    MySQL性能调优参数 MySQL 是一个广泛使用的开源关系型数据库管理系统,在实际应用中,如何提高 MySQL 的性能是一个关键...这些参数都是 MySQL 性能调优的关键参数,合理地设置这些参数可以显著地提高 MySQL 的性能。

    【荐】mysql服务性能优化—my.cnf_my.ini配置说明详解(16G内存)

    - **open_files_limit=10240**:设置MySQL进程可同时打开的最大文件数量,对于多表连接或大事务处理尤为重要,较高的值有助于提升性能。 - **back_log=600**: - **作用**:定义在MySQL暂时停止接收新连接前,短...

    mysql服务性能优化—my.cnf_my.ini配置说明详解(16G内存)

    优化MySQL服务性能不仅涉及上述参数,还需要关注其他如`key_buffer_size`、`query_cache_size`、`innodb_buffer_pool_size`等参数,以及合适的索引策略、查询优化等。在实际操作中,应根据具体业务场景和硬件条件...

    mysql参数及其优化

    query_cache_size、query_cache_type、innodb_buffer_pool_size、innodb_log_file_size、innodb_log_buffer_size、innodb_flush_logs_at_trx_commit、transaction_isolation、innodb_file_per_table、innodb_open_...

    MySQL的Innodb引擎配置说明.txt

    内容包括: 1.MySQL的Innodb引擎配置 1.如何配置MySQL服务器的最大连接数量 2.如何配置innodb_open_files,table_open_cache,innodb_file_io_threads和innodb_buffer_pool_size,innodb_log_file_size

Global site tag (gtag.js) - Google Analytics