Doc 说:
如果必须使用 INSERT 语句在循环中加载数据,请避免 以自动提交模式执行语句。每次提交后, 数据库需要同步对磁盘所做的更改,以确保不会 数据丢失。在自动提交模式下,每个语句都会 包装在一个单独的事务中,这意味着将调用 fsync 每一个陈述。当批量装载和 会显着减慢你的程序速度。
对于内存中的 DuckDB 也有效吗?
这是一个简单示例的计时结果
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