MySQL表在并发“加载数据”上崩溃

时间:2014-01-13 11:12:40

标签: mysql perl

我有一个包含18个节点的小网格,每个节点都运行自己的MySQL服务器。所有节点都从共享的GluserFS存储装载相同的DB数据。

现在我有一个繁重的计算我正在尝试并行化,所以我向每个节点发送一个Perl脚本来计算一些数据,将其写入文本文件,然后将该文件加载到DB中(在同一个表中) )。

通常前两个或三个插入成功但随后表崩溃并需要修复。

我尝试先将单个文本文件中的所有输出捕获,然后导入它,一切都很顺利,因此它不是数据格式问题。所有表格都是MYISAM。

这是代码(我正在使用DBI,$ dest_table崩溃):

$dbh->do("lock tables $dest_table write, $dest_table as va write, FeatDB_Hs_37_3.gene as g read");
$dbh->do("flush tables");
$dbh->do("load data local infile '$tmpfilename' into table $dest_table");
$dbh->do("update $dest_table as va, FeatDB_Hs_37_3.gene as g set va.protein_id=g.prot_acc where g.rna_acc=va.acc");
$dbh->do("unlock tables");

我的想法已经用完了,没有关于mysql日志的报道。在添加“flush”命令之前,有一些错误“服务器已经消失”,但它仍然无法解决崩溃问题。

我认为更新声明可能是罪魁祸首,但删除它不会改变任何内容。

0 个答案:

没有答案