加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

postgresql – INSERT和COPY之间的区别

发布时间:2020-12-13 18:04:27 所属栏目:百科 来源:网络整理
导读:根据文档, 使用COPY加载大量行总是比使用INSERT快,即使使用PREPARE并且多个插入被批处理到单个事务中也是如此. 为什么COPY比INSERT更快(多次插入被分批到单个事务中)? 实际上有很多原因,但主要原因是: 通常,客户端应用程序在发送下一个INSERT之前等待确认
根据文档,

使用COPY加载大量行总是比使用INSERT快,即使使用PREPARE并且多个插入被批处理到单个事务中也是如此.

为什么COPY比INSERT更快(多次插入被分批到单个事务中)?

实际上有很多原因,但主要原因是:

>通常,客户端应用程序在发送下一个INSERT之前等待确认一个INSERT的成功.因此每个INSERT都有一个往返延迟,调度延迟等等(PgJDBC支持批量管道INSERT,但我不知道有任何其他客户端这样做).
>每个INSERT都必须通过整个执行程序.使用预准备语句会绕过运行解析器,重写器和规划器的需要,但仍然存在执行器状态来设置和拆除每一行. COPY会进行一次设置,并且每行的开销都非常低,尤其是在不涉及触发器的情况下.

第一点是最重要的.这都是关于网络往返和重新安排延迟的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读