2012-05-09 11 views
0

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

私がロードしているデータファイルは合計129MBで、私は約150行/秒の速度を得ていますが、それはちょうど深刻です。私ははるかに大きな規模でこれをやらなければならないでしょうし、この速度ではロードに数日かかるかもしれません。これを劇的にスピードアップするために調整すべきパラメータがありますか? myisamとinnodbのバルクロードを調整するためのパラメータについては同様のスレッドが見つかりましたが、NDBテーブルについては何も見ていませんでした。ここで

は、負荷データINFILEコマンドです:私はまったく同じコマンドを実行しますが、InnoDBテーブルにテーブルのエンジンを変更すると

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

、それは代わりに、毎秒150行の第二の20,000行をロードします。

答えて

0

はい、MySQL Clusterは、複数のノードにまたがってすべてのデータをパーティション分割する別の獣です。

あなたが見る、最初のInnoDBに読み込むことができます:http://johanandersson.blogspot.co.nz/2012/04/mysql-cluster-how-to-load-it-with-data.html要するに

はNDBバッチサイズを増やします(あなたは何をしているかを知っていれば、私はそれを試していない)と、複数の接続を使用しますすべてのテーブル

ALTER TABLE tablename ENGINE=ndbcluster; 

SET ndb_batch_size=8*1024*1024; 

そして最後に

ANALYZE TABLE tablename;