以下的文章主要描述的是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数据库如何计算打开文件数的介绍,望你能有所收获。
【编辑推荐】
网站题目:MySQL数据库打开文件数的实际操作流程
分享地址:http://www.36103.cn/qtweb/news41/4691.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联