首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何确定是否正确设置了open_table_cache?

如何确定是否正确设置了open_table_cache?
EN

Database Administration用户
提问于 2014-11-19 15:47:33
回答 2查看 2.4K关注 0票数 2

有人知道这是什么意思吗?(来自MySQL文档)

您可以通过检查mysqld状态变量Opened_tables来确定表缓存是否太小,该变量指示自服务器启动以来打开表的操作数: mysql>显示全局状态,如“Opened_tables”;如果值很大或增长迅速,则为++\ Variable_name _Variable_name值\+--Opened_tables\ 2741,即使没有发出很多FLUSH TABLES语句,也要增加表缓存大小。

“非常大”是什么意思?“太快”是什么意思?

在我的例子中,open_table_cache设置为10,240,table_open_cache_instances设置为16,无论何时我查询opened_tables,它都比上一次要高。刚才是122,261。

我的数据库有2600个表和大约300个定期连接。对我如何知道open_table_cache应该是什么有什么想法吗?

EN

回答 2

Database Administration用户

发布于 2014-11-20 11:18:06

您没有提到,但看起来您使用的是MySQL 5.6版本。Opened_tables是一个计数器变量,它存储自MySQL服务启动以来由查询打开的所有表的值。

代码语言:javascript
复制
What does 'very large' mean? 

这个价值可以增长到几百万。

代码语言:javascript
复制
What does 'too rapidly' mean?

若要检查此值是否正在快速增长,只需在每秒钟的间隔内运行SHOW GLOBAL STATUS LIKE 'Opened_tables';查询即可。您将能够看到每秒打开多少个表?

没有一个单一的变量或因素负责open_table_cachetable_open_cache。(1) open_files_limit: MySQL在其文档中明确提到了它-- Increasing this value increases the number of file descriptors that mysqld requires.作为存储引擎,MySQL为每个表维护文件描述符。因此,您必须检查系统变量open_files_limit。此链接为您提供了有关此变量的重要性。幸运的是,这个变量可以在Windows服务器上的MysQL5.6中增加或减少。在服务开始时,MySQL会自动调整此值<=指定的open_files_limit值。

(2)查询执行计划:您的查询是什么,使用了多少个表?查询执行过程中如何有效地使用索引。

(3)表的大小:表中的记录数。它有多大或多小?

(4) RAM: RAM是物理内存,缓存大小取决于RAM大小。在执行和应用程序中,以及在加快查询执行过程中,它起着至关重要的作用。

这不是确切的答案,而是一个有益的建议。

票数 2
EN

Database Administration用户

发布于 2014-11-20 17:37:14

如果要优化数据库,请使用mysqltunner这样的脚本:

Mysql Tunner

这真的很有帮助。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/83076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档