对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。
Docs 菜单

存储类建议 mongot

此页面提供关于在裸机和虚拟化环境中为自管理 mongot (MongoDB Search 和 MongoDB 向量搜索进程) 部署选择存储的指导。

性能取决于整个存储系统(设备、控制器、主机、网络和文件系统)。在部署到生产环境之前,在代表性负载下验证所选的类。

mongot 基于 Apache Lucene 构建,它通过内存映射文件访问索引段,并依赖低延迟随机读取来服务于查询服务和后台索引维护。存储延迟会影响:

  • 查询延迟。缓存丢失会在每个查询的关键路径上落到磁盘。

  • 索引和复制吞吐量。段合并、初始同步和复制都会读取现有段并写入新段。仅写入假设不成立。

  • 负载下的稳定性。随着文件系统缓存压力的增加,查询延迟会随着存储延迟非线性降级。

这些属性使存储类成为 mongot 部署的最具影响力的基础设施决策之一。

  • 生产 mongot 索引存储默认使用专用本地 NVMe 固态硬盘

  • 仅当 NVMe 不可用且工作负载较小到中等时,才可使用本地企业 SATA 或串行附加 SCSI (SAS) 固态硬盘(SSD)。

  • 仅当全闪存 SAN 作为块设备呈现并在代表性混合读写负载下进行验证时,才可使用全闪存 SAN。

  • 请勿使用

    • NFS、NAS、SMB 或其他共享文件协议

    • 将通用云固态硬盘用作生产索引层级

    • 任何旋转媒体

下表汇总了每个存储类的建议。延迟和 IOPS 带反映了该类的常规公开基准。您的硬件可能会有所不同。您的结果可能会有所不同。

category
存储类
随机读取延迟带
随机读取 IOPS 带宽
建议

推荐

本地 PCIe/NVMe 固态硬盘

~20-150 微秒

每个设备 170K+,可扩展到 1M+,在高端企业级驱动器上

生产环境的推荐默认值。最适合 Lucene 的随机读取配置文件。

可选的

本地企业 SATA/SAS 固态硬盘

~100-200 微秒

每个设备的范围为 ~95K-100K

专用数据量上的中小工作负载的可接受基线。不建议用于延迟敏感或索引密集的部署。

可选的

全闪存 SAN、块设备(FC、iSCSI、NVMe-oF)

在正常负载下小于一毫秒,但实际上因协议和网络而异。

在数组上达到 200K+,但实际吞吐量取决于完整的主机到数组路径

仅当在代表性负载下进行块挂载、全闪存和端到端验证时,才是可接受的第二选择。

不推荐

通用型云固态硬盘 (例如,面向启动的网络固态硬盘层级)

个位毫秒

几千个基线 IOPS,可随预配进行扩展

适用于启动、开发、测试和广泛的交易使用。不适用于低延迟随机读取工作负载。

不推荐

NFS、NAS、SMB 或其他共享文件协议

参见理由

参见理由

除了性能之外,还存在正确性风险:Lucene 已经记录了 NFS 上的文件锁定和缓存一致性故障。请勿使用。

不推荐

HDD、吞吐量优化的 HDD、冷 HDD 或其他磁性媒体

5-10 毫秒

75-500 per volume

明显慢于固态硬盘类媒体,并与 Lucene 的访问模式基本不匹配。

将存储选择与监控相结合,尤其是当存储类不是本地 NVMe 时。

  • 调查索引卷上持续磁盘 IOPS 高于 ~1K 的情况。健康操作不应该靠近设备的饱和点。

  • 监控搜索页面故障高于约 1000/s,因为这些故障表明操作系统反复从磁盘拉取所需的索引页面,而不是从文件系统缓存中提供。连同升高的 IOPS,这表明关键路径上存储或内存压力过大。

  • 当负载增加时,观察 p99 查询延迟是否呈非线性增长。存储受限的部署会急剧降级,而不是平稳降级。

如果在 SAN、通用或 SATA/SAS 部署上看到这些信号,请在扩展前重新检查存储类。如果在本地 NVMe 上看到这些信号,请首先查看文件系统缓存的内存余量以及卷是否真正专用于 mongot