类别 | 特性名称 | 详细说明 | 应用场景/影响 |
性能优化 | 升级版 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 输出增强 | 更全面地展示分片集群的运行状态和内部统计指标。 | |
查询与聚合 | 查询统计与优化 | $queryStats:返回已记录查询的详细统计数据。 Query Shape:引入新的查询形状,将查询模式识别从被动的缓存管理机制,升级为可主动配置与管理的独立资源。 workingMillis:在慢日志中展示实际执行时间,排除锁等待。 | 更强大的查询性能诊断和优化工具,便于定位性能瓶颈。 |
| 聚合与转换 | $convert:支持字符串与 BinData 互转。 $toUUID:提供简化的字符串转 UUID 语法。 | 增强数据处理和转换能力。 |
| 操作控制 | 新增 defaultMaxTimeMS 参数,为 find, aggregate 等操作设置服务器端默认超时时间。 | 防止长时间运行的查询耗尽资源,提升系统稳定性。 |
安全特性 | 可查询加密 | 支持对加密字段使用范围查询操作符($lt, $lte, $gt, $gte)。 | 在保证数据隐私的同时,提供更复杂的查询能力,增强安全性。 |
运维改进 | 日志记录改进 | 避免因等待锁或流量控制而误判操作为慢操作。 | |
| 索引构建增强 | 快速错误报告:索引构建错误在扫描阶段立即返回,无需等到结束。 弹性部署:从节点可请求停止有问题的索引构建,避免崩溃。 磁盘空间管理:空间低于 indexBuildMinAvailableDiskSpaceMB 时自动停止构建。 | 索引构建过程更健壮,故障恢复更快,对业务影响更小。 |
| 批量与并发操作 | bulkWrite:单请求中对多个集合执行插入、更新、删除。 并发 DDL:支持同一数据库下不同集合并发执行 DDL 操作。 | 提升运维效率和批量数据处理能力。 |
| 准入控制 | 入口队列:通过 ingressAdmissionControllerTicketPoolSize 参数控制网络请求的排队。 | 提供新的流量控制机制,防止系统过载。 |
| 查询设置 | setQuerySettings:可指定索引或对特定查询形状进行拒绝。 explain() 增强:新增 queryPlanner.optimizationTimeMillis 显示优化耗时。 | |