提问人:david backx 提问时间:11/9/2023 更新时间:11/9/2023 访问量:33
更新 duckdb memor 限制,但更改不是持久的
Update duckdb memor limit but change is not persistant
问:
我有一个本地 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设置块下设置设置。这解决了我的问题。谢谢你调查我的问题
评论