在内存 DuckDB 上的 for 循环中插入?

问题描述 投票:0回答:1

Doc 说:

如果必须使用 INSERT 语句在循环中加载数据,请避免 以自动提交模式执行语句。每次提交后, 数据库需要同步对磁盘所做的更改,以确保不会 数据丢失。在自动提交模式下,每个语句都会 包装在一个单独的事务中,这意味着将调用 fsync 每一个陈述。当批量装载和 会显着减慢你的程序速度。

对于内存中的 DuckDB 也有效吗?

insert duckdb
1个回答
0
投票

这是一个简单示例的计时结果

BEGIN/COMMIT for EACH BLOCK         BEGIN/COMMIT for EACH BLOCK
in MEMORY DB                        on DISK DB
500 inserts in 0.2211 sec           500 inserts in 0.7529 sec
5000 inserts in 2.2268 sec          5000 inserts in 2.2142 sec
50000 inserts in 21.4900 sec        50000 inserts in 21.2902 sec
100000 inserts in 41.9304 sec       100000 inserts in 42.6198 sec


BEGIN/COMMIT for EACH RECORD        BEGIN/COMMIT for EACH RECORD
in MEMORY DB                        on DISK DB
500 inserts in 0.4359 sec           500 inserts in 2.8458 sec
5000 inserts in 4.2788 sec          5000 inserts in 28.6838 sec
50000 inserts in 42.3491 sec        50000 inserts in 297.1263 sec
100000 inserts in 84.8005 sec       100000 inserts in 680.4954 sec

© www.soinside.com 2019 - 2024. All rights reserved.