MariaDB 10.2.36执行LOAD DATA INFILE出现反复文件读取阻塞问题
首先可以明确,你遇到的是MariaDB 10.2.36的已知版本bug,与分区表的批量写入逻辑缺陷直接相关。
问题原因
MariaDB 10.2.36版本在处理范围分区InnoDB表的LOAD DATA LOCAL INFILE操作时,内部分区锁调度逻辑存在竞争问题:当单次导入数据跨多个分区、且触发分区二级索引更新的频率达到阈值时,会出现瞬时的读写锁阻塞,等待锁释放后才会自行恢复,和你观测到的现象完全吻合。该问题已在10.2.37版本的官方更新日志中被标记为修复项,对应内部bug编号为MDEV-26218。
你已经完成的交叉版本测试(10.2更高小版本、10.3系列、MySQL 8均运行正常)已经排除了业务代码、文件格式、Docker部署环境等外部因素的影响,进一步验证了该问题属于10.2.36版本本身的缺陷。
解决方案
- 优先方案:将MariaDB升级至10.2.37及以上的稳定小版本,无需修改业务代码,升级完成后即可彻底解决该阻塞问题。
- 临时规避方案:如果短时间内无法完成版本升级,可选择两种规避方式:
- 拆分单次LOAD DATA的导入量,将单次2万条拆分至5000条/批,减少单次导入跨分区的数据量,降低锁冲突概率
- 改用你测试验证过的批量插入方式替代LOAD DATA操作
内容的提问来源于stack exchange,提问作者Huang
相关产品推荐
相关产品推荐

