0

一部のデータを MySQL クラスターにロードしようとしています。クラスターには合計 5 つの VM があり、それぞれに 8 GB の RAM があり、すべて CentOS と MySQL Cluster 7.2.5 を実行しています。5 つの VM はすべて同じ物理ブレード上にあるため、それらの間のネットワークのボトルネックは最小限に抑えられます。ここに私のconfig.iniのペーストビンと、別のmy.cnfがあります。リンクは 2 つに制限されているため、テーブル スキーマを貼り付けることはできませんが、基本的にはほとんど int 列といくつかのテキスト列があります。主キーは、1 つの bigint と 1 つの int の複合キーです。

ロードしているデータ ファイルは合計 129 MB で、約 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 に変更すると、1 秒あたり 150 行ではなく、1 秒あたり 20,000 行が読み込まれます。

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 に答える