MySQL Status Opened_files 数据库状态作用意思及如何正确
本站中文解释
动态变量
MySQL status变量Opened_files指的是MySQL服务器文件打开数量统计,这个统计值不能被设置,只能用来查看文件打开数量的诊断相关信息。
Opened_files 用来记录 MySQL 内部文件的总数。由于 MySQL 会自动打开或关闭文件,所以这个值会随着 MySQL 的运行和处理一些操作会发生变化。 Opened_files 用于监控 MySQL 的打开文件数量,如果该值太大,意味着 MySQL 可能会耗尽操作系统的句柄或者描述符,导致无法打开更多文件从而导致 MySQL 遇到一些问题。
MySQL 不支持直接设置 Opened_files 变量。如果要设置该变量,需要针对 MySQL 的操作系统来做一些调整。比如,在 Linux 系统中,可以通过修改 /etc/security/limits.conf 来设置系统的最大打开文件数量:
* soft nofile 65536 //比如对Kernel的ulimit设置为65536
* hard nofile 65536
mysql soft nofile 65536
mysql hard nofile 65536
也可以使用 ulimit 命令:
ulimit -n 65536
这样可以限制MySQL打开最大文件数量,确保读写文件过程中 Opened_files 不会太多。
另外,也要注意修改 My.cnf 配置文件中的参数 open_files_limit ,确保其大于当前系统能够打开的最大文件数量,进一步防止开启太多文件导致一些问题,如下:
[mysqld]
open_files_limit = 65536 #设置MySQL打开文件数量
另外,也可以在启动 MySQL 的命令行参数中添加 open-files-limit 参数,从而强制修改 MySQL 的 open_files_limit 设置的值:
/usr/local/bin/mysql -uroot -p -h127.0.0.1 –open-files-limit=65536
最后,也可以使用 show global status 这个语句来查看当前 Opened_files 的值以及 file_handles_used 变量,以诊断文件打开数量相关的信息:
mysql> show global status like ‘Opened_files’;
+—————+——-+
| Variable_name | Value |
+—————+——-+
| Opened_files | 34 |
+—————+——-+
1 row in set (0.00 sec)
mysql> show global status like ‘file_handles_used’;
+——————+——-+
| Variable_name | Value |
+——————+——-+
| file_handles_used | 34 |
+——————+——-+
1 row in set (0.00 sec)
通过上面的结果,可以在网上搜索更多关于 Opened_files 变量的相关文档,定位到一些文件操作导致 Opened_files 太多的方法,从而进一步优化 MySQL 文件打开的处理效率。