首页 > 解决方案 > 如何限制 Duckdb 在 R 中的内存使用量?

问题描述

我有几个大的 R data.frames,我想将它们放入本地的duckdb 数据库中。我遇到的问题是即使我将文件指定为位置,duckdb 似乎也会将所有内容加载到内存中。

另外,我不清楚建立连接的正确方法(所以我不确定这是否与它有关)。我努力了:

duckdrv <- duckdb(dbdir="dt.db", read_only=FALSE)
dkCon <- dbConnect(drv=duckdrv)

并且:

duckdrv <- duckdb()
dkCon <- dbConnect(drv=duckdrv, dbdir="dt.db", read_only=FALSE)

两者都可以正常工作,这意味着我可以创建表、使用 dbWriteTable、运行查询等。但是,内存使用率非常高(与 data.frames 的大小大致相同)。我想我在某处读到,duckdb 默认使用一定百分比的可用内存,这对我不起作用,因为我使用的系统是共享资源。我还想并行运行一些查询,这将提高内存使用率。

我试过这个:

dbExecute(dkCon, "PRAGMA memory_limit='1GB';")

但这似乎没有什么区别,即使我关闭连接,关闭实例并重新连接。

有谁知道我该如何解决这个问题?当我将数据写入表时,RSQLite 也会暂时占用大量内存,但随后它会恢复正常,如果我打开只读连接,这根本不是问题。我想让duckdb工作,因为我认为查询应该更快。任何帮助,将不胜感激!

标签: rrsqliteduckdb

解决方案


推荐阅读