我在使用多個併發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