PostgreSQL kv(jsonb)存储

项目过程中,存储kv的时候,很多时候会选择redis进行存储,实际用PG也一样可以存储kv,而且查询速度并不慢。

下面可以看看PG存储kv以及其性能

测试如下:

sql 复制代码
test=# select version();
                                                version
--------------------------------------------------------------------------------------------------------
 PostgreSQL 17.4 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 8.5.0 20210514 (Red Hat 8.5.0-4), 64-bit


test=# create table my_table(id int primary key ,data jsonb);
CREATE TABLE

test=# insert into my_table select id,json_build_object(uuid_generate_v4(),uuid_generate_v4(),uuid_generate_v4(),uuid_generate_v4())::jsonb from generate_series(1,10000000) as id;
INSERT 0 10000000
时间:303390.556 ms (05:03.391)
test=# show work_mem;
 work_mem
----------
 4MB
(1 行记录)


时间:0.658 ms
test=# set work_mem='1024MB';
SET
时间:1.108 ms
test=# create index on my_table using gin(data);
CREATE INDEX
时间:227782.340 ms (03:47.782)

est=# select * from my_table where data @> json_build_object('145446c7-1638-4645-8e29-99be69b818cd','0f02d973-2af3-44ba-99ec-1d0384cffb9e')::jsonb;
 id | data
----+------
(0 行记录)


时间:2.081 ms

test=# select * from my_table where data @> json_build_object('a12acfc4-c7ea-4966-a61b-f6e4a6a94ded','ca49b55b-fb07-4491-a396-7b1d46056ffa')::jsonb;
   id    |                                                                               data
---------+------------------------------------------------------------------------------------------------------------------------------------------------------------------
 3400000 | {"76a87307-035a-4bea-81cb-d6e7e2fb5661": "9284780b-4f06-4812-9db7-ca8801f90f83", "a12acfc4-c7ea-4966-a61b-f6e4a6a94ded": "ca49b55b-fb07-4491-a396-7b1d46056ffa"}
(1 行记录)


时间:1.392 ms

从测试数据上看,搜索某个key和value,几乎是毫秒级别的。

相关推荐
ClickHouseDB6 小时前
ClickHouse Cloud 与 Snowflake 实时性价比对比:CostBench 测试中的 412 倍差距来
运维·数据库·系统架构
m0_639906946 小时前
Redis入门|五种数据结构、使用场景、持久化RDB&AOF
数据结构·数据库·redis
时间售卖铺7 小时前
触发器与函数实战:MySQL高效编程秘诀
运维·数据库·mysql·云原生
qetfw7 小时前
UOS MariaDB 数据库:安装、最小权限与备份验证
linux·数据库·mariadb·uos
数智园区合作社8 小时前
问数平台怎么把同一个指标锁成一个数
大数据·数据库·人工智能·ai
lbb 小魔仙9 小时前
Windows搭建PaddleOCR+飞书Webhook自动打卡通知机器人:识别、推送与远程触发完整教程
数据库·人工智能·prometheus·时序数据库
captain37610 小时前
MyBatis操作数据库(入门2)
java·数据库·spring boot·后端·spring·mybatis
心中有你021410 小时前
Java实现Dijkstra最短路径算法(邻接表 + 优先队列)
java·数据库·算法
龙亘川10 小时前
综合素质评价业务建模:从过程性评价到成长档案全链路闭环
数据库·智慧城市·数据可视化
数据库小组10 小时前
NineData 实战教程:MySQL 5.5 数据迁移同步到 MySQL 8.0(跨版本升级)
数据库·mysql·mysql优化·数据库开发·数据库迁移·版本升级·数据复制