MonetDB如何在同时运行多个sql复制操作的情况下执行?

Fed*_*ico 2 monetdb

我需要将一个大的CSV文件导入到MonetDB中,我想知道是否可以将文件拆分为两个并运行两个脚本,如:

mclient -u monetdb -d mydb < import1.sql
mclient -u monetdb -d mydb < import2.sql
Run Code Online (Sandbox Code Playgroud)

哪里

  • import1.sql copy使用file1.csv 发出SQL 指令
  • import2.sql copy使用file2.csv 发出SQL 指令

这会更快吗?这样做好吗?

谢谢

Hol*_*ger 6

MonetDB 对并发事务(即对数据的任何修改)使用Optimistic Concurrency Control.这意味着许多线程可以对相同的数据进行操作.然而,通过例如锁定而不是仅在提交事务之前检测到(即,当完成所有实际工作时)时,不会预期和避免写入冲突.

您创建的方案本质上是此策略的最坏情况:两个并发事务修改完全相同的数据.它们都将运行一段时间,一个将被提交,另一个将被回滚然后重新启动.

底线是:不要这样做:-).您可以做的是将"LOCKED"后缀附加到复制到语句中,这些语句在单用户模式下运行时可以显着加快加载速度(请参阅MonetDB文档).