postgresql - 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
解决方案
推荐阅读
- php - 当用户使用配置文件设置选择加入/退出时如何通知 Twilio
- java - 按钮点击和 HashMap Android Studio
- excel - = text() 公式仅在我按 Enter 时有效
- python - 不使用搜索查询从所选频道获取*所有* Youtube 视频 ID
- rust - 如何在 Tokio 运行时上下文中从异步方法调用的非异步方法中等待未来?
- mysql - 这个 presto 查询有什么问题?
- macos - 如何解决 Big Sur 上的 CLT 问题?
- reactjs - 使用函数中的方法做出反应
- javascript - JavaScript 游戏中的设置间隔函数不是每 10 秒运行一次
- sql - 如何在 SQL 中添加更新列以添加外键