0

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

我正在加载的数据文件总共为 129MB,而我的速度大约为 150 行/秒,这简直太糟糕了。我将不得不在更大的范围内执行此操作,并且以这种速度加载可能需要几天时间。我应该调整任何参数以显着加快速度吗?我发现了类似的线程来调整 myisam 和 innodb 批量加载的参数,但没有看到任何关于 NDB 表的信息。

这是加载数据文件中的命令:

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

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

4

1 回答 1

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;
于 2013-04-12T00:10:16.930 回答