首页 > 解决方案 > postgresql jsonb 占用大量内存

问题描述

我们测试了一个 40 Mb 的 json 插入jsonb列,它占用了 1.3 Gb 的内存。插入这个 40 Mb 的 jsontext时只占用了 500Mb 的内存。

我知道 json 树会占用大量内存,但为什么这个乘数如此巨大?而且,有替代品吗?我可以准备 jsonb 结构,所以不必转换::jsonb它。这就是内存消耗的来源。

一些代码片段有助于解释这个想法:

create table my_test (data jsonb, data2 text);

insert_jsonb.sql包含

insert into my_test (data) values ('{.......40mb }'::jsonb);

insert_text.sql包含

insert into my_test (data2) values ('{.......40mb }'::text);

然后通过 psql 运行它:

psql -f insert_jsonb.sql # takes 1.3Gb memory
psql -f insert_text.sql # takes 500Mb memory

标签: postgresqljsonb

解决方案


推荐阅读