更新 duckdb memor 限制,但更改不是持久的

Update duckdb memor limit but change is not persistant

提问人:david backx 提问时间:11/9/2023 更新时间:11/9/2023 访问量:33

问:

我有一个本地 duckdb 数据库,但我正在运行一个查询,在那里我收到此错误: 所以我试图像这样增加 duckdb 中的最大内存限制 但是这种变化不是持久的,因为当我在 duckdb 数据库中检查我的设置时,我看到它更改为 25GB,但是当我退出数据库时,它又是 13.7GB。有谁知道为什么这种变化不是持久的?顺便说一句,这就是我创建数据库的方式。Out of Memory Error: failed to allocate data of size 80 bytes (13.7GB/13.7GB used)set memory_limit='25GB';

import duckdb

def create_db():
    conn = duckdb.connect('rcsc.db', config={'memory_limit':'25GB'})
    conn.sql("create schema if not exists main_bronze")
    conn.sql("create table main_bronze.stg_fan as select * from read_csv('stg_fan.csv', all_varchar=1, auto_detect=1)")
    conn.sql("create table main_bronze.stg_access as select * from read_csv('stg_access.csv', all_varchar=1, auto_detect=1)")
    conn.sql("create table main_bronze.stg_fan_permission_source as select * from read_csv('stg_fan_permission_source.csv', all_varchar=1, auto_detect=1)")
    conn.sql("create table main_bronze.stg_fan_source as select * from read_csv('stg_fan_source.csv', all_varchar=1, auto_detect=1)")
    conn.sql("create table main_bronze.stg_ticket as select * from read_csv('stg_ticket.csv', all_varchar=1, auto_detect=1)")
    conn.sql("create table main_bronze.stg_merchandise as select * from read_csv('stg_merchandise.csv', all_varchar=1, auto_detect=1)")
    conn.sql("create table main_bronze.stg_fan_permission as select * from read_csv('stg_fan_permission.csv', all_varchar=1, auto_detect=1)")
    conn.sql("create table main_bronze.stg_gamification as select * from read_csv('stg_gamification.csv', all_varchar=1, auto_detect=1)")
    
if __name__ == '__main__':
    create_db()

也尝试过这样设置它,但这也没有用。 我期待着你所有的回答。提前致谢!conn.execute("set memory_limit = '25GB'")

鸭子数据库

评论


答:

0赞 Mause 11/9/2023 #1

DuckDB 设置在会话之间不是永久性的,每次都需要设置它们

评论

0赞 david backx 11/9/2023
没错,忘了说我正在使用 dbt,但在 dbt 中,您可以在profiles.yml设置块下设置设置。这解决了我的问题。谢谢你调查我的问题