视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
MySQL数据库打开文件数的实际操作流程
2020-11-09 14:04:37 责编:小采
文档

以下的文章主要描述的是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

  1. /etc/init.d/mysql restart

2. 看看打开了几个文件

  1. lsof | grep /home/mysql
  2. ...
  3. mysqld 24349 mysql 5u unix 0x000001041e8de040 4244009 /home/mysql/mysql.sock
  4. mysqld 24349 mysql 6u REG 8,33 2048 30425188 /home/mysql/mysql/host.MYI
  5. mysqld 24349 mysql 7u REG 8,33 0 304251 /home/mysql/mysql/host.MYD
  6. mysqld 24349 mysql 8u REG 8,33 2048 30425153 /home/mysql/mysql/user.MYI
  7. mysqld 24349 mysql 9u REG 8,33 2 30425155 /home/mysql/mysql/user.MYD
  8. mysqld 24349 mysql 10u REG 8,33 5120 30425126 /home/mysql/mysql/db.MYI
  9. mysqld 24349 mysql 11u REG 8,33 3080 30425148 /home/mysql/mysql/db.MYD
  10. mysqld 24349 mysql 12u REG 8,33 4096 30425154 /home/mysql/mysql/tables_priv.MYI
  11. mysqld 24349 mysql 13u REG 8,33 0 30425157 /home/mysql/mysql/tables_priv.MYD
  12. mysqld 24349 mysql 14u REG 8,33 4096 30425143 /home/mysql/mysql/columns_priv.MYI
  13. mysqld 24349 mysql 15u REG 8,33 0 30425156 /home/mysql/mysql/columns_priv.MYD
  14. mysqld 24349 mysql 16u REG 8,33 4096 30425127 /home/mysql/mysql/procs_priv.MYI
  15. mysqld 24349 mysql 17u REG 8,33 0 30425136 /home/mysql/mysql/procs_priv.MYD
  16. mysqld 24349 mysql 18u REG 8,33 1024 30425173 /home/mysql/mysql/servers.MYI
  17. mysqld 24349 mysql 19u REG 8,33 0 30425174 /home/mysql/mysql/servers.MYD
  18. mysqld 24349 mysql 20u REG 8,33 2048 30425182 /home/mysql/mysql/event.MYI
  19. mysqld 24349 mysql 21u REG 8,33 0 30425183 /home/mysql/mysql/event.MYD
  20. ...

可以看到,总共打开了8个表,每个表分别有2个MySQL数据库文件描述符,看来没错。

3. 再来看 status 结果

  1. mysql>show global status like 'open_%';
  2. +------------------------+-------+
  3. | Variable_name | Value |
  4. +------------------------+-------+
  5. | Open_files | 17 |
  6. | Open_streams | 0 |
  7. | Open_table_definitions | 15 |
  8. | Open_tables | 8 |
  9. | Opened_files | 52 |
  10. | Opened_tables | 15 |
  11. +------------------------+-------+

4. flush tables 后再看看

  1. mysql>flush tables;
  2. mysql> show global status like 'open_%';
  3. +------------------------+-------+
  4. | Variable_name | Value |
  5. +------------------------+-------+
  6. | Open_files | 1 |
  7. | Open_streams | 0 |
  8. | Open_table_definitions | 0 |
  9. | Open_tables | 0 |
  10. | Opened_files | 52 |
  11. | Opened_tables | 15 |
  12. +------------------------+-------+
  13. lsof | grep /home/mysql
  14. ...
  15. mysqld 24349 mysql 5u unix 0x000001041e8de040 4244009 /home/mysql/mysql.sock
  16. mysqld 24349 mysql 22u unix 0x00000102378ff980 4244128 /home/mysql/mysql.sock
  17. ...

可以看到,flush 之后,所有的文件描述符都释放了。

通过测试可以得知,另一个打开的文件描述符是 slow query log所用。

如果是有大量的 MyISAM 表,那么就需要特别注意打开文件数是否会超出了。

以上的相关内容就是对MySQL数据库如何计算打开文件数的介绍,望你能有所收获。

下载本文
显示全文
专题