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,几乎是毫秒级别的。

相关推荐
马克Markorg4 小时前
常见的向量数据库和具有向量数据库能力的数据库
数据库
Coder_Boy_6 小时前
技术让开发更轻松的底层矛盾
java·大数据·数据库·人工智能·深度学习
helloworldandy6 小时前
使用Pandas进行数据分析:从数据清洗到可视化
jvm·数据库·python
数据知道8 小时前
PostgreSQL 故障排查:如何找出数据库中最耗时的 SQL 语句
数据库·sql·postgresql
qq_12498707538 小时前
基于SSM的动物保护系统的设计与实现(源码+论文+部署+安装)
java·数据库·spring boot·毕业设计·ssm·计算机毕业设计
枷锁—sha8 小时前
【SRC】SQL注入WAF 绕过应对策略(二)
网络·数据库·python·sql·安全·网络安全
Coder_Boy_8 小时前
基于SpringAI的在线考试系统-考试系统开发流程案例
java·数据库·人工智能·spring boot·后端
Gain_chance8 小时前
35-学习笔记尚硅谷数仓搭建-DWS层最近n日汇总表及历史至今汇总表建表语句
数据库·数据仓库·hive·笔记·学习
此生只爱蛋8 小时前
【Redis】主从复制
数据库·redis
马猴烧酒.9 小时前
【面试八股|JAVA多线程】JAVA多线程常考面试题详解
java·服务器·数据库