Mariadb更新purge_paths表报行数过多错误求助
问题描述
通过Perl脚本更新MariaDB的purge_paths表时,收到错误提示:
"purge_paths has too many rows (2343154), exiting"
已执行以下操作但问题未解决:
- 修改表参数:
执行结果显示成功,2343154行受影响,无重复和警告。ALTER TABLE purge_paths MAX_ROWS=5000000000 AVG_ROW_LENGTH=999; - 在启动脚本中设置
myisam_data_pointer_size=7 - 验证数据目录位于Ext4文件系统,且DataDir和tmpDir有足够空间
环境信息:
- MariaDB服务器版本:5.5.68-MariaDB
- 业务场景:Perl脚本识别源码控制服务器中超过367天的文件,将信息更新到
purge_paths表时触发错误。
排查方向与解决建议
检查Perl脚本的自定义限制
这个错误提示并非MariaDB原生报错,大概率是脚本内自定义的逻辑限制。优先排查:- 脚本中是否有统计
purge_paths行数的代码(比如SELECT COUNT(*) FROM purge_paths) - 是否存在硬编码的行数阈值(比如200万),当表行数超过该值时触发退出逻辑
- 脚本中是否有统计
确认MyISAM表的实际配置
执行以下SQL查看表的实际参数:SHOW TABLE STATUS LIKE 'purge_paths'\G核对
Max_rows是否为设置的5000000000,同时确认表引擎确实是MyISAM。排查中间件/第三方库限制
如果脚本通过中间件或第三方数据库连接库操作数据库,检查这些工具是否存在行数限制的配置项。分批处理数据
即使没有限制,一次性插入234万行也可能引发性能问题。建议修改脚本,将数据分批插入(比如每次插入1000行),降低单次操作的压力。
内容的提问来源于stack exchange,提问作者Raj
相关产品推荐
相关产品推荐

