相关疑难解决方法(0)

为什么插入多行时 psql 查询需要更长的时间。为什么是非线性的

因此,如果我将一行插入到 postgres 数据库中,则需要 18 毫秒。如果我在这样的循环中执行此操作:

INSERT INTO contacts (numbers)
SELECT  distinct array[
        (random() * 99999999)::integer,
        (random() * 99999999)::integer
    ]
  FROM generate_series(1,4000000) AS x(id);
Run Code Online (Sandbox Code Playgroud)

我改变插入的行数,时间是非线性的。这是数据:

-1 条记录 - 18 毫秒
-20k 条记录 - 36 秒
-50k 条记录 - 151 秒
-100k 条记录 - 750 秒

为什么这会呈指数级增长?我的数据库中需要 1000 万条记录进行负载测试,插入 50k 行然后再次重新插入 50k 似乎更快,因为 151 + 151 < 750

对这个主题的任何见解将不胜感激。我认为这是因为 postgres 将数据保存到回滚,以防查询严重失败或被用户取消,并且 postgres 不想“一半插入”整个请求。

postgresql performance

4
推荐指数
1
解决办法
831
查看次数

标签 统计

performance ×1

postgresql ×1