NDBCluster LOAD DATA Infile性能

时间:2012-05-09 18:58:12

标签: mysql

我正在尝试将一些数据加载到MySQL集群中。该集群共有5个VM,每个8 GB,全部运行CentOS和MySQL Cluster 7.2.5。所有5个虚拟机都在同一物理刀片上,因此它们之间的网络瓶颈应该是最小的。这是我的config.ini和另一个my.cnf的粘贴框。我只限于两个链接,所以我不能粘贴表模式,但基本上它主要是int列和几个文本列。主键是一个bigint和一个int的复合键。

我加载的数据文件总共为129MB,而我的速度大约为150行/秒,这只是非常糟糕。我将不得不以更大的规模进行此操作,并且按此速率加载可能需要数天。是否有任何我应该调整的参数来大大提高速度?我找到了关于调整myisam和innodb批量加载的参数的类似线程,但是没有看到任何有关NDB表的信息。

这是load data infile命令:

LOAD DATA INFILE '/tmp/test.txt' INTO TABLE test
FIELDS TERMINATED BY '|' ESCAPED BY '\\' LINES TERMINATED BY '\n';

当我运行相同的命令但将表的引擎更改为innodb时,它每秒加载20,000行而不是每秒150行。

1 个答案:

答案 0 :(得分:0)

是的,MySQL Cluster是一个不同的野兽,可以跨多个节点对所有数据进行分区。

您可以先加载到Innodb,请参阅:http://johanandersson.blogspot.co.nz/2012/04/mysql-cluster-how-to-load-it-with-data.html

简而言之:

增加ndb批量大小(如果你知道你在做什么,我还没有尝试过)并使用多个连接

SET ndb_batch_size=8*1024*1024;

在每张桌子上

ALTER TABLE tablename ENGINE=ndbcluster;

最后

ANALYZE TABLE tablename;