MySQL案例-open too many files,MyISAM与partition

本文探讨了MySQL MyISAM分区表在操作过程中导致系统报错Too many open files的原因及解决方案。通过对一张包含500多个分区的600G MyISAM表的研究,揭示了MyISAM引擎在处理分区表时的特性,并提出了调整系统open_files_limit参数的具体建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

-------------------------------------------------------------------------------------------------短文---------------------------------------------------------------------------------------------------------------

长话短说~

现象:
error log中批量刷错误日志, 形如: [ERROR] /usr/sbin/mysqld: Can't open file: './*******/*********.frm' (errno: 24)
PS: 用*代替某些不可描述内容_(:з」∠)_

查了一下errno,  代表的信息是: OS error code  24:  Too many open files

实际上解决起来也很简单, 修改下系统的openfiles和mysql的
open_files_limit就好了,
出问题的虚拟机上面, open_files_limit的值设置成了300, 只需要改高一些, 比如65535, 应该就解决了;

更进一步:
虽说能解决问题, 但是有一个现象还是比较奇怪的, 一般来说, 如果是Too many open files的问题, 出问题的文件应该没什么规律;
但是这个环境上面, 刷了一大票的错误信息, 都是同一个表的, 这个就比较奇怪了, 为什么全部是那一张表?

好奇心:
所以就登进去看看那张表的情况, 发现是一个MyISAM的表, 而且有600+G, 但是文件的大小应该不会对open files有什么影响才对;
于是再看一眼表结构: 分区表, 还是500+的分区数量??

搜索:
印象里面innodb在操作分区表的时候只会单独操作一个文件的, 但是MyISAM就不太了解了;
查阅文档以后发现如下内容:


大致意思如下:
根据MyISAM引擎的设计, 基于MyISAM的分区表在操作的时候, 会打开表中所有的分区;
所以需要提供足够多的文件描述符;

考虑到出问题的那张表正好是一个MyISAM的分区表, 且包含了500+的分区, 所以把修改参数的方案和分区表的问题一起反馈给了业务方;

PS: MyISAM是个坑啊, 别用了行不行....._(:з」∠)_

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29510932/viewspace-2134679/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29510932/viewspace-2134679/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值