惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

AI
AI
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Google DeepMind News
Google DeepMind News
T
Tenable Blog
博客园_首页
S
Securelist
Spread Privacy
Spread Privacy
Google Online Security Blog
Google Online Security Blog
Forbes - Security
Forbes - Security
Engineering at Meta
Engineering at Meta
U
Unit 42
L
LINUX DO - 热门话题
量子位
T
Threat Research - Cisco Blogs
博客园 - 【当耐特】
C
Cyber Attacks, Cyber Crime and Cyber Security
K
Kaspersky official blog
MyScale Blog
MyScale Blog
P
Proofpoint News Feed
The Last Watchdog
The Last Watchdog
Google DeepMind News
Google DeepMind News
GbyAI
GbyAI
Martin Fowler
Martin Fowler
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Security Latest
Security Latest
Scott Helme
Scott Helme
V
Vulnerabilities – Threatpost
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
I
InfoQ
Know Your Adversary
Know Your Adversary
Cisco Talos Blog
Cisco Talos Blog
The Register - Security
The Register - Security
T
The Blog of Author Tim Ferriss
aimingoo的专栏
aimingoo的专栏
V2EX - 技术
V2EX - 技术
T
Tailwind CSS Blog
月光博客
月光博客
Recent Announcements
Recent Announcements
G
Google Developers Blog
F
Full Disclosure
W
WeLiveSecurity
宝玉的分享
宝玉的分享
腾讯CDC
G
GRAHAM CLULEY
Vercel News
Vercel News
Simon Willison's Weblog
Simon Willison's Weblog
美团技术团队
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Help Net Security
Help Net Security

PostgreSQL

五年过去了,结论有什么变化吗? 适配信创数据库的人的精神状态 be like - V2EX 用了十几年的 MySQL 了,突然发现 PostgreSQL 可能更加适合我,大家怎么看? - V2EX postgresql 多进程改多线程 - V2EX 二键安装一个 postgresql 服务 - V2EX PostgreSQL + TimescaleDB 方案不按主键索引走,有什么办法吗? - V2EX 看看大家现在用 pg 的最佳实践是怎么样的 - V2EX 用 PostgreSQL 存图片等 binary 有什么坑吗 - V2EX [求助] 在哪个网址能够下载 PostgresSQL 9.3.0 版本的 Windows 二进制安装包?官方/ftp/old/binary 里没有。 - V2EX [请教]pgvector 的性能问题 - V2EX 多笔记本离线 PostgreSQL 数据库同步问题: UUID vs 自增主键 - V2EX PostgreSQL 通过分 Database 做多租户可行吗? PostgreSQL 多租户的正确姿势 - V2EX Postgresql 放 K8S 里,大家目前都用的什么方案呢? - V2EX 2025 年 postgresql 有什么优秀的备份解决方案 - V2EX 有大神研究过 pg_resetwal 的原理吗,为什么会丢 user 表的数据 - V2EX 按照 stackoverflow 教程执行 pg_resetwal, postgresql 的数据库被清空了 - V2EX 求国内高性价比的 postgresql 服务,纳米项目 - V2EX 请教一个关于 PostgreSQL 连接被 Server 关闭的问题 - V2EX PostgreSQL 18 JSONB 增加能取代 MongoDB 吗? - V2EX PostgreSql Oracle 迁移 postgreSQL ,有什么经验分享 - V2EX 有什么权限管理最佳实践吗 - V2EX 请教 PostgreSQL 和 PostGIS 使用问题 - V2EX pg 的毫秒级时间戳转换 - V2EX 关于 PostgreSQL 中的 max_connections 和 pg_stat_activity 的疑惑 - V2EX 目前国内最高性价比的 postgresql 服务是? - V2EX 新手,请问 postgres 怎么配置 vacuum - V2EX 学习 PostgreSQL,有什么资料推荐? - V2EX Apache AGE 和 Neo4j 哪个更好? - V2EX 有没有像 Citus 那样方便分片的图数据库? - V2EX 怎样使用 C 语言访问 PostgreSQL 集群? 小系统 数据库 mysql 和 postgresql 比对 和 wordpress 数据库技术选型 PostgreSQL 没有 on update current_timestamp 感觉好麻烦 - V2EX 主从同步使用的端口号可以和数据库端口号不同吗? - V2EX 为什么有时 PostgreSQL 有时会表现得比较卡? - V2EX 第一次使用 PostgreSQL,连建表都不会,请教点经验 Java 有没有针对 PostgreSQL 好用一点的 ORM - V2EX 请教,有无简单易用的 PostgreSQL 表结构、数据的同步工具? - V2EX PostgreSQL 启动失败 - V2EX PostgreSQL 数据库 正常情况下指定了 locale=C 与 encoding=UTF8 (最简单) - V2EX 错误迁移 pgsql 导致日志报 warning,请问如何解决? - V2EX 从 Mongodb 到 PostgreSQL 的大迁移 有无 pg 的入门精进博客或者视频推荐 有什么不通过写脚本的方式,将 postgreSQL 的建表语句转换为 doris 的建表语句吗? - V2EX 新的 PostgreSQL 语言插件 PL/PRQL - V2EX 请教一个经典的 postgres 的 sql 怎么写 - V2EX 洗数据:如何将 Contact 和 ContactTag 多对多关联起来 Postgres 在中国还能起来么? - V2EX PostgreSQL 17 增加增量备份的功能 - V2EX
通过 pg_roaringbitmap 优化标签查询的话,有没有必要做高频标签映射和结合普通复合索引? - V2EX
shendaowu · 2025-11-27 · via PostgreSQL

我问了 DeepSeek ,它说 roaringbitmap 类型的值的元素的取值范围如果很大的话会影响效率。就是类似 INSERT INTO tag_content_bitmaps (tag_id, content_bitmap) VALUES(1, rb_build(ARRAY[1,100000])) 的内容查询效率会低于 INSERT INTO tag_content_bitmaps (tag_id, content_bitmap) VALUES(1, rb_build(ARRAY[1,2])) 。然后我就想到了一些花活。

首先,使用关系型数据库建立(标签 id ,内容 id )复合索引之后如果标签的使用率不高的话,搜索效率还是可以的,但是如果标签的使用率很高,那么好像是因为区分度过低,所以搜索的效率会很低。但是 pg_roaringbitmap 对于高使用率的标签来说速度好像还是挺快的。但是就像前面第一段说的,这个也不是免费的。所以我不太敢全部标签都塞到 roaringbitmap 类型里。然后是具体的花活。

标签 id,标签名字,使用率
1,苹果,0.3
2,香蕉,0.01
3,梨,0.15
高频标签 id,原标签 id
1,1 //这个对应苹果
2,3 //这个对应梨

不过这还有问题,就是如何禁止高频标签建立索引,因为反正也不会用,还会占地方。可能最高效的方法是将低频标签全都复制到一个新表里?不过这个很反模式,也会导致维护麻烦。我问过 DeepSeek ,它给的方法感觉效率不怎么高的样子。

结合普通复合索引就是如果要搜索的标签同时包含高频标签和低频标签。那么就先在 roaringbitmap 里搜索那些高频标签,然后在结果中搜索满足低频标签的内容。或者可能反过来搜索效率更高? DeepSeek 说前者效率更高。

这个高频和低频的分界线有没有比较好的建议?我目前定的是 3%。因为 DeepSeek 说 1% 到 5% 的使用率的标签建立索引还是可以的。

roaringbitmap 相关的表结构:

CREATE TABLE tag_content_bitmaps (
tag_id BIGINT PRIMARY KEY,
content_bitmap roaringbitmap
);
CREATE TABLE content_tag_bitmaps (
content_id BIGINT PRIMARY KEY,
tag_bitmap roaringbitmap
);

或者我这套花活是不是没什么大用?有没有更好的实现加速标签查询的方法?另外最好是 CPU 和内存要求低点,ES 之类的我怕钱包吃不消。

我跟 DeepSeek 聊的内容: https://chat.deepseek.com/share/dkuyx547fddet8vwwi

最后,再加点我个人的问题,答不答看你心情。这套花活我一个野生程序员能不能把持住?实际会不会很复杂?另外具体的 SQL 我应该肯定是写不明白了,我肯定会让 AI 写。但是我会写测试。我感觉这个测试还是比较好写的,用那种标准的运行两套代码对比结果就行了。一套简单低效几乎不会出错,一套复杂高效可能有错。