jon*_*odo 4 postgresql performance
因此,如果我将一行插入到 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 不想“一半插入”整个请求。
撇开 DISTINCT 导致一些奇怪行为的事实不谈,插入时间随着批量加载变大而变长的主要原因有两个:
| 归档时间: |
|
| 查看次数: |
831 次 |
| 最近记录: |