是clojure.jdbc/insert!以批处理模式还是一个一个地完成?

is clojure.jdbc/insert! done in batch mode or one by one?

我用clojure后jdbc/insert!插入一些数据,它打印了很多“1”,所以我想知道插入是在性能更好的批处理模式下完成的,还是一个接一个地完成的,这很慢。我们最好让它像 java jdbc 批量插入那样运行。

clojurewerkz.testcom.core=> (time (apply (partial j/insert! postgres-db  'test_clojure [:a :b :c :d :e])   (map #(process-row % constraints) (repeat 10000 row))))
"Elapsed time: 540.111482 msecs"
(1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 

clojure.jdbc/insert!最终调用

(apply db-do-prepared db transaction? (first stmts) (rest stmts))

调用 db-do-execute-prepared-statement 所以看来你的答案是肯定的!它分批进行。