mysql中打开文件和打开文件的区别

Posted

技术标签:

【中文标题】mysql中打开文件和打开文件的区别【英文标题】:difference between opened files and open files in mysql 【发布时间】:2014-04-08 15:47:36 【问题描述】:

在以下状态下,我打开的文件计数为“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

打开的文件和打开的文件有什么关系吗?是否会因为增加 opens_files 值而出现任何性能问题。这是一个 8 GD RAM 和 500 GB 硬盘的服务器,处理器:Intel(R) Xeon(R) CPU E3-1220 V2 @ 3.10GHz。它是一个专用的mysql服务器。

这里是命令

ulimit -n;

1024 是计数

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

【问题讨论】:

这个问题属于ServerFault。 【参考方案1】:

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

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

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

有关此变量的性能影响的一些提示(以及有关将其设置得太高的一些注意事项),请参阅:

http://www.mysqlperformanceblog.com/2009/11/16/table_cache-negative-scalability/(那里描述的问题似乎终于在 MySQL 5.6 中解决了)

你的cmets:

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

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

更有意义的是计数器增加的速率,即它在给定的时间间隔内增长的速度。这可能表明您正在快速重新打开表格。

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

因此,如果您有数千个表(或表的分区)并且您可以快速访问其中的各种表,那么您可能会在该表打开缓存中看到大量周转。这将通过 counter Opened_tables 迅速增加来表示。

因此,将 table_open_cache 设置得更高意味着 MySQL 可以保留更多打开的表句柄,并可能降低周转率。

【讨论】:

我发现只有从应用程序调用特定的复杂查询时,opens_files 计数才会增加。我将尝试优化查询。但我有一个疑问。关于opened_files,我的目标应该是什么。我应该把这个计数归零吗? 我发现根据“Percona Tools for MySQL”的报告,对于这种硬件配置,我无法再增加 table_open_cache。所以如果我优化复杂查询我的opened_files计数是否会保持为0。(只是想了解在mysql性能调整中监控opened_files计数的目的)。注意:open_file 在限制以下是稳定的。所以我对此没有任何意见。 不要忘记观察 mysql 可用的打开文件 - 它应该高于 table_open_cache 值。【参考方案2】:

所以解决方案是增加我的硬件(尤其是 RAM),以便我能够将 table_open_cache 增加到超过 4096 或优化查询。

【讨论】:

以上是关于mysql中打开文件和打开文件的区别的主要内容,如果未能解决你的问题,请参考以下文章

python中打开文件区别

delphi打开文件的各种方法?

c语言中,再对文件的操作模式中,a和a+、w和w+、r和r+有啥区别?

为啥我把php+mysql+apache都安装好了,可是当我在打开默认目录的时候显示的是文件下载

linux 没有后缀的文件怎么打开

如何用mysql打开sql文件