批量INSERT操作中mysqld内存持续增长问题求助
批量插入MySQL时内存持续增长问题求助
我们有一个脚本,需要从API获取并转换数据后批量插入MySQL,数据量约1000-2000万条。MySQL本应轻松处理这类操作,最初因为脚本用Rust的sqlx编写,我们怀疑是sqlx的问题。为排除这个可能性,我们把插入测试脚本从Rust重写为Java 11(和生产环境版本接近),但内存持续增长的问题依旧存在。
我们已经尝试了多种排查手段:
- 检查MySQL状态
- 调整MySQL/InnoDB配置
- 减小批量插入规模
- 甚至在Java中不使用预编译语句
但内存仍呈线性增长。批量插入时磁盘占用逐步增加是正常情况,但内存持续增长显然异常,长此以往会导致服务器崩溃。
之前求助时有人推测,InnoDB可能使用了内存映射文件,这个说法看似合理,但我们的内存测量方式存在问题,无法精准确认是否真的存在泄漏。
另外,我们不确定当前的批量插入方式是否正确——目前仅采用固定1000行的批量插入操作。我们试过替代方案:生成执行相同操作的dump文件,用dump文件插入时没有内存问题。
请问有人知道这可能是什么原因导致的吗?
内容的提问来源于stack exchange,提问作者Speykious
相关产品推荐
相关产品推荐

