Mysql Server 守护程序打开或访问太多文件是一个问题

标签 mysql linux data-warehouse lsof

我的 mySQL 数据仓库大小接近 1.4 TB 当我检查 mysql 服务器守护进程正在访问的文件数量时,我感到很惊讶。

cmd 用户:lsof | grep mysql 使用的 cnd2 : lsof | mysql | grep mysql |厕所-l 2598 请建议如何减少这种情况。这对 mysql 性能有何影响。

最佳答案

很有可能减少 MySQL 打开的文件数量。但请注意,这可能会降低性能。就性能而言,(比打开文件的数量)更重要的是文件的关闭和打开。 (这比保持文件打开的成本更高。)

MySQL 缓存打开的表,保持最近使用的文件打开。这避免了与关闭文件然后再次重新打开它们相关的性能开销。保持打开状态的表数量的限制是使用 table_open_cache 变量设置的。

MySQL 打开的文件数量限制在 max_open_files 变量中设置。

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

<小时/>

请注意,MyISAM 表作为三个文件存储在磁盘上:tablename.frm、tablename.MYD 和 tablename.MYI。如果表已分区,则每个分区都需要单独的文件。

使用 InnoDB 引擎,如果在创建表时设置了 innodb_file_per_table 选项,则会有两个文件:tablename.frm 和 tablename.idb。

如果多个 session 正在访问一个表,则该表将有多个“打开文件”。

还有几个innodb日志文件,以及mysql日志文件(日志记录是启用的),mysql常规日志,慢查询日志等。

任何临时表、派生表或中间结果集超过存储在“内存”中的表的大小限制,即额外的文件将被转出到磁盘,并且可能会有更多打开的文件。

<小时/>

如果您遇到“打开文件过多”操作系统错误,您可以增加操作系统限制。如果不可能,则减少 max_open_files 变量;您可能还需要减少一些其他相关变量。

如果您正在考虑限制打开文件的数量作为降低性能的解决方案,那么您可能找错了方向,因为减少 MySQL 可以保持打开的文件数量可能会减少 em>性能。

关于Mysql Server 守护程序打开或访问太多文件是一个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25985909/

相关文章:

linux - wget 不从真实的 https url vaultpress 下载

c - volatile 和缓存行为

sql - MDX 计算事件之间的时间

mysql - MySQL和mariadb数据库的存储和查询效率?

mysql - Doctrine2 主键

mysql - 从 MySQL 数据库获取数据

c++ - 第二次无法捕获段错误

sql - 柱状数据库

mysql - Delphi ADO + MySQL + Developer Express Grid

mysql - 为什么连接到 MySQL 服务器这么慢?