MongoDB 性能回归基准测试与日志记录背后的真相

MongoDB 性能回归基准测试与日志记录背后的真相

💡 原文英文,约3300词,阅读约需12分钟。
📝

内容提要

本文讨论了MongoDB升级时的性能回归问题,通过性能回归测试和参数调整来提高性能。升级到较高版本时,大多数客户会看到性能下降,特别是从v4.4.x升级的客户。作者发现写关注设置对性能有很大影响,通过更改默认设置可以显著提高性能。作者还讨论了日志刷新器对性能的影响,并提到了相关文档和配置。建议尝试MongoDB 8.0以获得更好的性能。

🔎

延伸解读

写关注默认值变更:性能回归的根源

从MongoDB v5.0开始,副本集和分片集群的默认写关注从1改为majority。这一变更旨在提升数据一致性,但导致升级后写入性能显著下降。文章测试显示,v4.4插入100万文档仅需6分钟,而v7.0默认设置下耗时127分钟。对于从v4.4.x升级的用户,这可能是性能骤降的主要原因。

调整写关注:性能提升与数据风险

将写关注设置为1可以大幅提升写入速度,v7.0中插入时间从127分钟缩短至10分钟。但这也意味着写入确认不再等待多数节点持久化到日志,可能在崩溃时导致数据丢失。用户需根据自身对数据安全性和性能的需求进行权衡。

日志刷新器:隐藏的性能瓶颈

通过Flamegraph分析,作者发现日志刷新器(Journal Flusher)是导致高写关注下性能低下的关键因素。当写关注为majority时,MongoDB可能隐式要求日志持久化(j:true),从而增加延迟。禁用writeConcernMajorityJournalDefault可避免此问题,但会牺牲持久性。

MongoDB 8.0:性能改进的未来

MongoDB官方在JIRA中承认性能回归由多种代码和配置变更导致,难以逐一分析。他们表示已在8.0版本中实施了多项性能改进,并建议用户尝试8.0以评估是否获得与早期版本相当或更好的性能。对于受性能问题困扰的用户,升级到8.0可能是一个值得考虑的选项。

❓

Q&A

MongoDB升级时性能回归的主要原因是什么?

主要原因是从v5.0开始,默认的写关注设置从1变为'majority',这影响了性能表现,尤其是从v4.4.x升级的客户。

如何通过调整写关注设置来提高MongoDB的性能?

将写关注设置调整为1可以显著提高性能,例如在v7.0中,插入100万文档的时间从127分钟缩短至10分钟。

MongoDB 8.0版本有什么改进?

MongoDB 8.0版本预计将改善性能问题,建议用户尝试以获得更好的性能。

日志刷新器对MongoDB性能的影响是什么?

日志刷新器会影响写入性能,特别是在使用默认的写关注设置时,可能导致性能下降。

禁用writeConcernMajorityJournalDefault有什么风险?

禁用后可能加快写入确认,但在崩溃时可能导致数据丢失风险,因为写操作不会等待写入到磁盘。

MongoDB性能回归测试的结果如何?

在v4.4中插入100万文档耗时6分钟,而在v7.0中耗时127分钟,显示出显著的性能下降。

🏷️

标签

➡️

继续阅读