DuckDB 全文搜索与 PostgreSQL 全文搜索及 Meilisearch 对比:一亿文档索引——构建时间、查询延迟与内存占用

发布日期:2026-05-01 10:04:10   浏览量 :1
发布日期:2026-05-01 10:04:10  
1

2026西湖龙井茶官网DTC发售:茶农直供,政府溯源防伪到农户家 

DuckDB 对比 PostgreSQL 对比 Meilisearch:大规模全文搜索

当处理一亿份文档时,选择全文搜索引擎不仅仅关乎功能——更关乎原始性能、资源效率以及工具与工作负载的契合程度。最近一项对比 DuckDB、PostgreSQL 和 Meilisearch 的基准测试揭示了在构建时间、查询延迟和内存使用方面令人惊讶的权衡,这可能会重塑你构建搜索基础设施的方式。

测试设置:真实工作负载,真实硬件

该基准测试在 Hetzner AX-52 服务器(AMD Ryzen 7 7700 处理器,64GB 内存,2块 1TB NVMe 固态硬盘)上使用了包含一亿条 Reddit 评论的数据集(约 50GB 原始文本,14.8GB 压缩 Parquet 格式)。这并非合成测试——查询源自生产环境的搜索日志,涵盖四类:简单匹配、多词短语、模糊匹配和布尔查询。每个引擎均使用其最新稳定版本(DuckDB 1.1、PostgreSQL 17.4、Meilisearch 1.10)进行测试,并进行了性能优化。

关键发现 1:索引构建时间——DuckDB 带来惊喜

DuckDB 的全文搜索扩展在冷启动构建中占据主导地位,耗时仅38 分钟——比 PostgreSQL 的 91 分钟快 2.4 倍,与 Meilisearch 的 44 分钟大致相当。关键优势在于何处?列式输入/输出和流水线分词。DuckDB 仅从 Parquet 文件中读取被索引的列(body),避免了不必要的数据移动。相比之下,PostgreSQL 在构建通用倒排索引之前先将行摄入堆页面,使输入/输出开销加倍。

Meilisearch 虽然速度快,但非常消耗内存,在索引期间峰值达到29GB 内存——这对于小型部署来说是不可接受的。PostgreSQL 得益于其通用倒排索引,在增量更新方面胜出(100 万篇新文档仅需 14 秒),但 DuckDB 的列式架构使得部分更新比完全重建成本更低。

关键发现 2:查询延迟——专业化至关重要

查询性能因工作负载不同而有显著差异:

  • PostgreSQL 通用倒排索引 在简单的布尔“与”查询中表现出色(P50 延迟:4 毫秒),得益于其成熟的查询计划器和索引优化。
  • DuckDB 在模糊查询和分析型查询(例如莱文斯坦距离匹配)中占据主导地位,性能比 PostgreSQL 高出 4 倍。其列式设计允许快速扫描和聚合,使其成为将搜索作为分析原语的理想选择。
  • Meilisearch 提供了最佳的容错排名,但在大规模下表现吃力——在一亿篇文档时,P99 延迟高达800 毫秒以上,这可能是由于其单分片设计所致。

关键发现 3:资源效率——DuckDB 的磁盘优势

得益于压缩列式存储,DuckDB 的索引比 Meilisearch 小3 倍。PostgreSQL 的通用倒排索引比 DuckDB 大,但比 Meilisearch 更紧凑。对于磁盘空间受限的环境,仅这一点就可能决定胜负。

结论:没有通用的赢家

  • 选择 PostgreSQL,如果你需要集成在线事务处理的搜索,具备快速的布尔查询和增量更新能力。
  • 选择 DuckDB,如果你优先考虑快速的分析型查询、低磁盘占用和批量索引。
  • 选择 Meilisearch,如果容错能力和开发者体验至关重要——但仅适用于较小的数据集或配合水平扩展使用。

请访问 novvista.com 阅读完整文章,获取包含更多示例和基准测试的完整分析。

最初发布于

免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。

关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
支持 反馈 订阅 数据
回到顶部