美文网首页工作生活Java 杂谈
Postgres中JSONB使用的问题

Postgres中JSONB使用的问题

作者: WANGGGGG | 来源:发表于2019-06-29 16:06 被阅读0次

JSONB拼接

INSERT INTO table_name (x,y) VALUES(jsonb_build_array(数据),y) ON CONFLICT (y) 
UPDATE SET x=table_name.x||数据

并发是大量使用||去给原先的JSONB拼接内容会导致硬盘占有量急速提升,我测试了200w次左右拼接,第二天别的同事反映服务器硬盘不够用了,我存的实际大小才几个MB的东西,硬生生的占了150G的硬盘

JSONB的set操作

INSERT INTO table_name (x,y) VALUES(jsonb_build_array(数据),y) ON CONFLICT (y) 
UPDATE SET x=jsonb_set(table_name.x,路径,数据)

还是和上面一样的并发操作,硬盘占有量还是居高不下,即使使用vacuum还是不行

当前采用的解决方案

不在使用并发的拼接操作,采用在代码中汇聚一批数据后,直接存储成一个单独的json,不采用set和拼接操作

INSERT INTO table_name (x,y) VALUES(jsonb_build_array(数据),y) ON CONFLICT (y) 
UPDATE SET x=数据::jsonb

相关文章

网友评论

    本文标题:Postgres中JSONB使用的问题

    本文链接:https://www.haomeiwen.com/subject/lvypcctx.html