当我检查 mysql 服务器守护程序正在访问的文件数量时,我有一个 mySQL 大小的数据仓库,大小接近 1.4 TB,我很惊讶。
cmd 用户:lsof | grep mysql cnd2 使用:lsof | grep mysql | wc -l 2598 请建议如何减少。这对mysql性能有什么影响。
当我检查 mysql 服务器守护程序正在访问的文件数量时,我有一个 mySQL 大小的数据仓库,大小接近 1.4 TB,我很惊讶。
cmd 用户:lsof | grep mysql cnd2 使用:lsof | grep mysql | wc -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。
如果多个会话正在访问一个表,则该表将有多个“打开的文件”。
还有一些 innodb 日志文件,以及 mysql 日志文件(在 logging 中启用)、mysql 通用日志、慢查询日志等。
任何临时表、派生表或超出“内存中”存储的表大小限制的中间结果集,即附加文件将被转出到磁盘,并且可能还有更多打开的文件。
如果您遇到“打开的文件过多”操作系统错误,您可以增加操作系统限制。如果那不可能,则减小max_open_files
变量;您可能还需要减少一些其他相关变量。
如果您正在考虑限制打开文件的数量作为降低性能的解决方案,那么您可能会发现错误的树,因为减少 MySQL 可以保持打开的文件数量可能会降低性能。