2012-02-07 4 views
2

は私がMonetDBに大きなCSVファイルをインポートする必要があり、二つにファイルを分割し、同様に2つのスクリプトを実行することが可能であるならば、私は思ったんだけど:MonetDBは、複数のSQLコピー操作を同時に実行すると、どのように機能しますか?

mclient -u monetdb -d mydb < import1.sql 
mclient -u monetdb -d mydb < import2.sql 

  • import1。 SQLはfile1.csvを使用してSQL copy命令を発行し、
  • import2.sqlはfile2.csv
を使用してSQL copy指示を出します10

これはもっと速くなるでしょうか?これはうまくいくのでしょうか?

おかげ

答えて

6

MonetDBが同時トランザクション(データ、すなわち、任意の変更)のためOptimistic Concurrency Control使用。これは、多くのスレッドが同じデータに対して操作できることを意味します。しかしながら、書込競合は、例えばロッキングによって予想され回避されることはなく、トランザクションをコミットする前に検出される(すなわち、すべての実際の作業が完了したときのみ)。

作成したシナリオは、基本的にこの戦略の最悪のケースです。つまり、同じデータを正確に変更する2つの同時トランザクションです。両方ともしばらく実行され、一方はコミットされ、もう一方はロールバックされて再起動されます。

結論は:しないでください:-)。あなたができることは、 "LOCKED"接尾辞をステートメントにコピーに追加して、シングルユーザモードで実行するときに読み込みを大幅に高速化することです(the MonetDB Documentation参照)。