2012-02-07 61 views
2

我需要進口大量的CSV文件到MonetDB,我想知道是否有可能將文件一分爲二,並運行兩個腳本,如: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用於併發事務(即,對數據的任何修改)。這意味着許多線程可以對相同的數據進行操作。然而,通過例如鎖定而不是預期和避免寫入衝突,而是在提交事務之前(即,當所有的實際工作完成時)才檢測到寫入衝突。

您創建的場景本質上是該策略的最差情況:兩個併發事務完全修改相同的數據。他們兩個都會運行一段時間,一個會被提交,另一個會回滾然後重新啓動。

底線是:不要這樣做:-)。你可以做的是在複製語句中附加「LOCKED」後綴到語句中,當在單用戶模式下運行時可以顯着提高加載速度(請參閱the MonetDB Documentation)。

相關問題