我需要将一个大的CSV文件导入到MonetDB中,我想知道是否可以将文件拆分为两个并运行两个脚本,如:
mclient -u monetdb -d mydb < import1.sql
mclient -u monetdb -d mydb < import2.sql
Run Code Online (Sandbox Code Playgroud)
哪里
copy使用file1.csv 发出SQL 指令copy使用file2.csv 发出SQL 指令这会更快吗?这样做好吗?
谢谢
MonetDB 对并发事务(即对数据的任何修改)使用Optimistic Concurrency Control.这意味着许多线程可以对相同的数据进行操作.然而,通过例如锁定而不是仅在提交事务之前检测到(即,当完成所有实际工作时)时,不会预期和避免写入冲突.
您创建的方案本质上是此策略的最坏情况:两个并发事务修改完全相同的数据.它们都将运行一段时间,一个将被提交,另一个将被回滚然后重新启动.
底线是:不要这样做:-).您可以做的是将"LOCKED"后缀附加到复制到语句中,这些语句在单用户模式下运行时可以显着加快加载速度(请参阅MonetDB文档).