1

我想知道是否有办法减少mysql中打开的文件。

细节 :

  • mysql 5.0.92

  • 使用的引擎:MyISAM

  • SHOW GLOBAL STATUS LIKE 'Opened_tables' : 150K

  • 显示变量,如 '%open%' :

        open_files_limit    200000
        table_open_cache    40000
    

尝试的解决方案:

  • 重新启动服务器:打开的表计数器为 0,但这不是我的 pov 的一个好的解决方案,因为您需要每周重新启动,因为计数器会快速增加

  • FLUSH TABLES :就像 mysql 文档所说的那样,它应该强制所有正在使用的表关闭,但这不会发生

那么对这个问题有什么想法吗?

4

1 回答 1

4

通常,许多打开的表都无需担心。如果您接近操作系统限制,您可以在内核设置中增加此限制:

如何更改 Linux 中打开文件的数量限制?

MySQL 为每个 session 独立打开表以获得更好的并发性。

table_open_cache和max_connections系统变量影响服务器保持打开的最大文件。如果您增加这些值中的一个或两个,您可能会遇到操作系统对每个进程打开文件描述符的数量施加的限制。许多操作系统允许您增加打开文件的限制,尽管方法因系统而异。

详细的,这里解释一下

http://dev.mysql.com/doc/refman/5.5/en/table-cache.html

编辑

为了验证您的假设,您可以max_connections暂时table_open_cache减少SET GLOBAL table_open_cache := newValue.

该值可以在不重新启动服务器的情况下动态调整。

在 MySQL 5.1 之前,这个变量被称为table_cache

我想说的是,降低这个值甚至可能会对性能产生负面影响,因为可能的并发读取更少(队列获取时间更长),相反你应该尝试增加操作系统限制并增加max_open_files,但也许我只是看不到这里的重点

于 2013-01-25T10:01:14.227 回答