8.0 新特性速览

最近更新时间:2025-11-25 15:32:21

我的收藏
关于 MongoDB 8.0 的完整变更列表与新特性详解,请参见官方 MongoDB 8.0 release-notes
类别
特性名称
详细说明
应用场景/影响
性能优化
升级版 TCMalloc
缓存机制:从每线程缓存改为每 CPU 缓存,减少内存碎片,提升高负载适应性。
内存释放:新增后台线程,每秒尝试向操作系统释放内存。tcmallocReleaseRate 参数可精确控制释放速率(单位 Bytes/s),默认10MB/s。
更高效的内存使用,尤其适用于内存压力大、负载波动剧烈的场景。
Majority 写优化
写关注为 "majority" 时,只需大多数节点写入 oplog 即可返回确认,无需等待数据应用。
大幅提升 majority 写入的吞吐量和延迟性能。
oplog 处理优化
MongoDB 8.0 在 Secondary 节点引入了 oplog 缓冲区,将数据同步过程解耦为两个独立阶段:Writer 线程持续拉取并缓存 oplog,Applier 线程异步从缓冲区应用数据。使两个线程得以并行运行,解决了此前因串行等待导致的资源空耗问题。
提升从节点的数据复制吞吐量,减少主从延迟。
批量插入优化
非事务性批量插入合并为单个 oplog 条目,所有文档在 Change Stream 中拥有相同的 clusterTime。
提升批量插入性能,避免从节点回放大量 oplog 导致的复制延迟。
分片增强
reshard 优化
forceRedistribution:允许使用相同分片键进行重新分片,快速将数据重新分配到新分片。
commitReshardCollection:可在运维窗口期主动禁写,加速分片完成。
更快、更灵活的数据重新分布,便于负载均衡和容量规划。
分片管理命令
unshardCollection:取消集合分片,将数据合并到指定分片。
moveCollection:将未分片集合移动到任意分片(时间序列和加密集合除外)。
shardAndDistributeCollection:分片后立即重新分配数据。
提供更精细、灵活的集合级数据布局管理能力。
分片操作优化
哈希分片:默认每个分片创建1个 chunk(之前为2个)。
findAndModify/deleteOne:可使用部分分片键作为查询条件。
updateOne with upsert:分片集合上,upsert 操作的查询条件可不包含全部分片键。
directShardOperations 角色:允许直接对分片执行命令,进行分片操作。
简化分片集群的运维与查询,提升易用性。
serverStatus 输出增强
从 MongoDB 8.0开始, serverStatus 在其输出中包含以下新的shardingStatistics字段:
更全面地展示分片集群的运行状态和内部统计指标。
查询与聚合
查询统计与优化
$queryStats:返回已记录查询的详细统计数据。
Query Shape:引入新的查询形状,将查询模式识别从被动的缓存管理机制,升级为可主动配置与管理的独立资源。
workingMillis:在慢日志中展示实际执行时间,排除锁等待。
更强大的查询性能诊断和优化工具,便于定位性能瓶颈。
聚合与转换
$convert:支持字符串与 BinData 互转。
$toUUID:提供简化的字符串转 UUID 语法。
增强数据处理和转换能力。
操作控制
新增 defaultMaxTimeMS 参数,为 find, aggregate 等操作设置服务器端默认超时时间。
防止长时间运行的查询耗尽资源,提升系统稳定性。
安全特性
可查询加密
支持对加密字段使用范围查询操作符($lt, $lte, $gt, $gte)。
在保证数据隐私的同时,提供更复杂的查询能力,增强安全性。
运维改进
日志记录改进
从 MongoDB 8.0 开始,可以配置 数据库分析器,以根据 MongoDB 处理慢操作时花费的时间(而不是慢操作的总延迟)来记录慢操作。更多信息,请参见 日志记录
避免因等待锁或流量控制而误判操作为慢操作。
索引构建增强
快速错误报告:索引构建错误在扫描阶段立即返回,无需等到结束。
弹性部署:从节点可请求停止有问题的索引构建,避免崩溃。
磁盘空间管理:空间低于 indexBuildMinAvailableDiskSpaceMB 时自动停止构建。
索引构建过程更健壮,故障恢复更快,对业务影响更小。
批量与并发操作
bulkWrite:单请求中对多个集合执行插入、更新、删除。
并发 DDL:支持同一数据库下不同集合并发执行 DDL 操作。
提升运维效率和批量数据处理能力。
准入控制
入口队列:通过 ingressAdmissionControllerTicketPoolSize 参数控制网络请求的排队。
提供新的流量控制机制,防止系统过载。
查询设置
setQuerySettings:可指定索引或对特定查询形状进行拒绝。
explain() 增强:新增 queryPlanner.optimizationTimeMillis 显示优化耗时。
提供更细粒度的查询行为控制和洞察。腾讯云 MongoDB 支持更灵活的限流策略,详情请参见:SQL 限流