首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql中打开的文件与打开的文件的区别

mysql中打开的文件与打开的文件的区别
EN

Stack Overflow用户
提问于 2014-03-06 06:51:00
回答 2查看 17.4K关注 0票数 5

在下面的状态中,我打开的文件计数为'95349‘。这一价值正在迅速增长。

mysql> show global status like 'open_%';

Open_files = 721

Open_streams =0

Open_table_definitions = 706

Open_tables = 741

Opened_files = 95349

Opened_table_definitions = 701

Opened_tables = 2851

也看看这个。

mysql>show variables like '%open%';

have_openssl =禁用

innodb_open_files = 300

open_files_limit = 8502

table_open_cache = 4096

max_connection = 300

是否与打开的文件和已打开的文件有关。由于opened_files值的增加,会出现性能问题吗?这是一个具有处理器的8GdRAM和500 GB硬盘服务器: Intel(R) Xeon(R) CPU E3-1220 V2 @ 3.10GHz。它是一个专用的mysql服务器。

这里是为了命令

上限-n;

1024是伯爵

服务器经常挂起。使用一些在线工具,我已经优化了一些参数。需要知道还有什么需要优化吗?在何种情况下,打开的文件计数会减少?是否有必要将打开的文件计数限制在一定范围内。如果是的话,如何为我的服务器找到适当的限制。如果不清楚,请多问几个问题来帮助我。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-03-06 07:55:21

Opened_files是自上次重新启动mysqld以来打开表的次数的计数器(自上次重新启动以来的秒数,请参见状态变量Uptime )。

Open_files不是计数器;它是当前打开的文件数。

如果您的Opened_files计数器正在快速增长,则可以通过增加table_open_cache的大小来提高性能。

有关此变量的性能影响的一些技巧(以及一些设置过高的注意事项),请参见:

  • cache-negative-scalability/ (在MySQL 5.6中描述的问题似乎最终得到了解决)

关于你的评论:

你误解了柜台的用途。它总是在增加。它计算自上次重新启动mysqld以来特定操作发生的次数。在这种情况下,打开表的文件。

在计数器中有一个高值不一定是一个问题。这可能仅仅意味着您的mysqld已经运行了许多天或数周而没有重新启动。因此,您必须将这个数字与您的正常运行时间(即MySQL状态变量Uptime,而不是Linux )相比较。

更有意义的是计数器的增长率,也就是它在给定的时间间隔内增长的速度。这可能意味着你正在快速重新打开桌子。

通常,MySQL不应该重新打开表,因为它为每个表保留了一个打开的表句柄。但它只能有有限的数量。这就是table_open_cache的作用。在您的示例中,您的MySQL实例可以“记住”它已经一次打开了多达4096个表。如果需要打开另一个表,它将关闭一个文件描述符并打开所请求的表。

因此,如果您有数千个表(或表的分区),并且可以快速访问各种表,那么您可以在打开的表缓存中看到大量的周转率。这将被指示的计数器Opened_tables迅速增长。

因此,对table_open_cache进行更高的调整意味着MySQL可以保留更多开放的表句柄,并可能降低周转率。

票数 4
EN

Stack Overflow用户

发布于 2014-03-07 06:37:11

因此,解决方案要么是增加我的硬件(特别是内存),以便我能够增加超过4096的table_open_cache,要么优化查询。

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

https://stackoverflow.com/questions/22217186

复制
相关文章

相似问题

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