Изпитвам блокиране, когато използвам множество едновременни команди LOAD DATA INFILE. Ето предисторията:
Разработих базиран на Java ETL инструмент, който зарежда плоски файлове в бази данни на Infobright (Infobright е колонна база данни, базирана на MySQL). В края на обработката зареждането се изпълнява с помощта на команда LOAD DATA INFILE. Този процес може да обработва зареждане в множество таблици и всяко зареждане се извършва паралелно, като се използва отделна връзка (от съображения за производителност).
Също така съм написал bash скрипт, който изпълнява този инструмент паралелно за множество файлове (за да спестя време на обработващата част, тъй като командите LOAD така или иначе ще бъдат сериализирани от DB сървъра). Това означава, че мога да имам множество команди LOAD DATA за една и съща целева таблица (от различни процеси).
Това, което очаквах, беше, че командата LOAD DATA ще бъде изпълнена по сериен начин, но в крайна сметка ще завърши. Въпреки това изпитвам задънена улица. Ако изпълня "show processlist", мога да видя, че всичките ми команди LOAD DATA са в състояние "System locked".
Някой имал ли е подобен проблем преди и намирал ли е решение?
Подробности: Използвам 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)