我在使用多个并发LOAD DATA INFILE comamnds时遇到死锁。这里是背景:Infobright/MySQL加载数据infile死锁
我开发了一个基于Java的ETL工具,它将平面文件加载到Infobright数据库中(Infobright是基于MySQL的柱状数据库)。在处理结束时,使用LOAD DATA INFILE命令执行加载。该进程可以处理加载到多个表中,并且每个加载都使用单独的连接并行完成(出于性能原因)。
我也写过一个bash脚本,它可以并行运行多个文件(为了节省处理部分的时间,因为LOAD命令将由数据库服务器序列化)并行运行此工具。这意味着我可以为同一个目标表(来自不同的进程)提供多个LOAD DATA命令。
我期待的是LOAD DATA命令将以串行方式执行,但最终会结束。但是,我正在经历一场僵局。如果我执行“显示进程列表”,我可以看到我的所有LOAD DATA命令都处于“系统锁定”状态。
有没有人遇到过这样的问题,并找到解决方案?
详细信息: 我使用的是Infobright Enterprise Edition v3.5.2。这是基于
MySQL 5.1.40。 我的ETL应用程序使用java 1.5.0_08和Mysql
Connector Java v5.1.12。 操作系统:Centos 5.6 64位(Linux 2.6.18-238.12.1.el5)
我还建议使用Infobright 4.0.6的最新版本,因为在LOAD DATA命令中进行了一些巨大的增强,具有更好的线程以及添加行级错误检查支持。 – 2012-04-23 19:25:25