使用copY加载大量行总是比使用INSERT快,即使使用PREPARE并且多个插入被批处理到单个事务中也是如此.
为什么copY比INSERT更快(多次插入被分批到单个事务中)?
实际上有很多原因,但主要原因是:>通常,客户端应用程序在发送下一个INSERT之前等待确认一个INSERT的成功.因此每个INSERT都有一个往返延迟,调度延迟等等(PgJDBC支持批量管道INSERT,但我不知道有任何其他客户端这样做).
>每个INSERT都必须通过整个执行程序.使用预准备语句会绕过运行解析器,重写器和规划器的需要,但仍然存在执行器状态来设置和拆除每一行. copY会进行一次设置,并且每行的开销都非常低,尤其是在不涉及触发器的情况下.
第一点是最重要的.这都是关于网络往返和重新安排延迟的.
总结以上是内存溢出为你收集整理的postgresql – INSERT和COPY之间的区别全部内容,希望文章能够帮你解决postgresql – INSERT和COPY之间的区别所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)