您好,欢迎访问一九零五行业门户网

MySQL数据库打开文件数的实际操作流程

以下的文章主要描述的是mysql数据库是如何正确计算打开文件数的实际操作流程,大家都知道每打开一个myisam表,就需要对其使用2个文件描述符,所以我们就来验证一下mysql数据库如何计算打开文件数。 试验 从手册的6.4.8. how mysql opens and closes tables可
以下的文章主要描述的是mysql数据库是如何正确计算打开文件数的实际操作流程,大家都知道每打开一个myisam表,就需要对其使用2个文件描述符,所以我们就来验证一下mysql数据库如何计算打开文件数。
试验
从手册的6.4.8. how mysql opens and closes tables可以了解到,每打开一个myisam表,就需要使用2个文件描述符,咱们来验证一下。
1. 重启mysqld
/etc/init.d/mysql restart 
2. 看看打开了几个文件
lsof | grep /home/mysql   ...   mysqld 24349 mysql 5u unix 0x000001041e8de040 4244009 /home/mysql/mysql.sock   mysqld 24349 mysql 6u reg 8,33 2048 30425188 /home/mysql/mysql/host.myi   mysqld 24349 mysql 7u reg 8,33 0 30425189 /home/mysql/mysql/host.myd   mysqld 24349 mysql 8u reg 8,33 2048 30425153 /home/mysql/mysql/user.myi   mysqld 24349 mysql 9u reg 8,33 892 30425155 /home/mysql/mysql/user.myd   mysqld 24349 mysql 10u reg 8,33 5120 30425126 /home/mysql/mysql/db.myi   mysqld 24349 mysql 11u reg 8,33 3080 30425148 /home/mysql/mysql/db.myd   mysqld 24349 mysql 12u reg 8,33 4096 30425154 /home/mysql/mysql/tables_priv.myi   mysqld 24349 mysql 13u reg 8,33 0 30425157 /home/mysql/mysql/tables_priv.myd   mysqld 24349 mysql 14u reg 8,33 4096 30425143 /home/mysql/mysql/columns_priv.myi   mysqld 24349 mysql 15u reg 8,33 0 30425156 /home/mysql/mysql/columns_priv.myd   mysqld 24349 mysql 16u reg 8,33 4096 30425127 /home/mysql/mysql/procs_priv.myi   mysqld 24349 mysql 17u reg 8,33 0 30425136 /home/mysql/mysql/procs_priv.myd   mysqld 24349 mysql 18u reg 8,33 1024 30425173 /home/mysql/mysql/servers.myi   mysqld 24349 mysql 19u reg 8,33 0 30425174 /home/mysql/mysql/servers.myd   mysqld 24349 mysql 20u reg 8,33 2048 30425182 /home/mysql/mysql/event.myi   mysqld 24349 mysql 21u reg 8,33 0 30425183 /home/mysql/mysql/event.myd   ...  
可以看到,总共打开了8个表,每个表分别有2个mysql数据库文件描述符,看来没错。
3. 再来看 status 结果
mysql>show global status like 'open_%';   +------------------------+-------+   | variable_name | value |   +------------------------+-------+   | open_files | 17 |   | open_streams | 0 |   | open_table_definitions | 15 |   | open_tables | 8 |   | opened_files | 52 |   | opened_tables | 15 |   +------------------------+-------+  
4. flush tables 后再看看
mysql>flush tables;   mysql> show global status like 'open_%';   +------------------------+-------+   | variable_name | value |   +------------------------+-------+   | open_files | 1 |   | open_streams | 0 |   | open_table_definitions | 0 |   | open_tables | 0 |   | opened_files | 52 |   | opened_tables | 15 |   +------------------------+-------+   lsof | grep /home/mysql   ...   mysqld 24349 mysql 5u unix 0x000001041e8de040 4244009 /home/mysql/mysql.sock   mysqld 24349 mysql 22u unix 0x00000102378ff980 4244128 /home/mysql/mysql.sock   ...  
可以看到,flush 之后,所有的文件描述符都释放了。
通过测试可以得知,另一个打开的文件描述符是 slow query log所用。
如果是有大量的 myisam 表,那么就需要特别注意打开文件数是否会超出限制了。
以上的相关内容就是对mysql数据库如何计算打开文件数的介绍,望你能有所收获。
其它类似信息

推荐信息