MongoDB 6.1的发布说明

重要:MongoDB 6.1是一个快速版本,仅支持MongoDB Atlas。MongoDB 6.1不支持在本地使用。有关更多信息,请参阅MongoDB版本控制。

要安装支持本地使用的最新MongoDB版本MongoDB 6.0,请参阅MongoDB 6.0安装说明。

MongoDB 6.1 发布于 2022 年 10 月 11 日

正则表达式

以下部分描述了MongoDB 6.1中正则表达式的变化。

PCRE库升级

Perl兼容正则表达式(PCRE)是MongoDB用于实现正则表达式模式匹配的库。从6.1版本开始,MongoDB将PCRE库升级到PCRE2。PCRE2是当前的PCRE库,并经过积极维护和更新。

要了解如何在MongoDB中执行正则表达式匹配,请参阅以下页面:

*UCP用于匹配非ASCII字符的Regex选项

从MongoDB 6.1开始,您可以使用*UCP选项进行正则表达式查询。*UCP选项匹配非ASCII字符(具体来说,该选项可以匹配UTF-8字符)。然而,*UCP选项导致的查询速度比没有指定选项的查询慢。

有关使用*UCP选项的示例,请参阅扩展Regex选项以匹配ASCII以外的字符。

复制

可重试写入错误处理

从MongoDB 6.1开始,如果第一次和第二次尝试可尝试写入都没有执行一次写入失败,MongoDB会返回NoWritesPerformed标签的错误。

NoWritesPerformed标签区分了insertMany()等批量操作的结果。在insertMany操作中,可能会出现以下结果之一:

结果 MongoDB输出
没有插入任何文件。 使用NoWritesPerformed标签返回错误。
部分工作已经完成。(至少插入了一个文档,但不是全部。) 返回错误时没有NoWritesPerformed标签。
插入所有文件。 成功回来了。

应用程序可以使用NoWritesPerformed标签来明确确定没有插入任何文档。此错误报告允许应用程序在处理可重试写入时保持数据库的准确状态。

在以前版本的MongoDB中,当可重试写入的第一次和第二次尝试失败时,会返回错误。然而,没有区别表明没有执行任何写入。

一般变化

平衡政策变化

从MongoDB 6.1开始,分片集群中的数据根据数据大小而不是块数量进行分布。因此,您应该知道分片集群数据分发行为的以下重大变化:

  • 平衡器分发数据范围,而不是块。平衡策略寻找数据分发的均匀性,而不是块分布。
  • 块不受自动分割的影响。相反,只有当块穿过碎片时才会被分割。
  • 块现在被称为范围。
  • moveRange取代了moveChunk

日志更改

从MongoDB 6.1开始,日志记录始终处于启用状态。因此,MongoDB删除了storage.journal.enabled选项以及相应的--journal--nojournal命令行选项。

提高了多个文档删除的效率

从MongoDB 6.1开始:

  • 为了提高效率,MongoDB可能会同时批处理多个文档删除。
  • explain命令结果包含一个新的批BATCHED_DELETE文档删除阶段。

重新分片

从MongoDB 6.1开始,有新的指标可供分片。以下命令的输出已更改:

有关详细信息,请参阅currentOp服务器状态。

currentOp指标

从MongoDB 6.1开始,currentOp命令和thedbdb.currentOp()方法扩展了用于分片的输出。

分片操作可能涉及多个MongoDB实例,MongoDB实例可以在分片操作中发挥不同的作用。特定操作和主机实例在分过程中发挥的作用决定了每个指标何时更新。

衡量标准 角色跟踪 说明
opStatus 已移除。
desc 所有 描述所采取的行动。该值是以下值之一:分片捐赠服务分片接收服务重新分片协调员服务对于$currentOp,UUID命令将添加到每个角色的状态文档中。
op 所有 此指标具有常量值:“命令”。
ns 所有 分片索引的命名空间。该值是以下形式的字符串:<database>.<collection>
originatingCommand 所有 列出操作命令选项的文档。
donorState 捐助者 角色状态机的当前状态。
coordinatorState 协调员 角色状态机的当前状态。
recipientState 接受者 角色状态机的当前状态。
approxDocumentsToCopy 接受者 源集合中的文档数量。
文件复制 接受者 已经复制的文件数量。
大约字节ToCopy 接受者 源集合中文档的总大小(以字节为单位)。
字节复制 接受者 复制的字节数。当重新分片完成时,此值与approxBytesToCopy的值相似。
oplogEntriesFetched 接受者 写入oplog缓冲区集合的oplog条目数量。
oplog条目应用 接受者 从oplog缓冲区集合中应用的oplog条目数量。
插入应用 接受者 适用于临时分片集合的插入次数。每个涉及插入的操作日志条目都会将计数器增加1。
更新已应用 接受者 适用于临时分片集合的更新数量。每个涉及更新的oplog条目都会将计数器增加1。
删除应用 接受者 适用于临时分片集合的删除数量。每个涉及删除的oplog条目都会将计数器增加1。
总操作时间lapsed秒 所有 自操作开始以来的秒数。
totalCopyTimeElapsed秒 接受者 克隆的秒数。
totalCopyTimeElapsed秒 协调员 收件人可以克隆的最大秒数。
总计应用时间lapsed秒 接受者 应用更改所花费的秒数。
总计应用时间lapsed秒 协调员 收件人在应用更改时可能花费的大致最大秒数。
总关键部分时间已过时秒 接受者 在关键部分花费的秒数。
总关键部分时间已过时秒 协调员 关键部分本可以举行的秒数。
剩余操作时间估计秒 接受者 操作完成前的估计秒数。
allShardsLowestRemainingOperationTimeEstimatedSecs 协调员 在所有碎片中计算,这是剩余秒数的最低估计值。
allShardsHighestRemainingOperationTimeEstimatedSecs 协调员 在所有碎片中计算,这是剩余秒数的最高估计值。
countWritesToStash收藏 接受者 对收件人的写入数量将藏匿的集合。
countWrites在关键部分 捐助者 在捐赠者的关键部分尝试的写作数量。
count阅读在关键部分 捐助者 在捐赠者的关键部分尝试的阅读次数。

serverStatus指标

从MongoDB 6.1开始,serverStatus命令和 db.serverStatus()方法具有以下输出更改:

新指标

替换的指标

resharding.remainingOperationTimeEstimatedMillis替换为:

重命名指标

移除了指标img

  • oplogApplierApplyBatchLatencyMillis
  • collClonerFillBatchForInsertLatencyMillis

存储引擎img

在极少数情况下,由于缓存压力,写入可能会失败。当这种情况发生时,MongoDB会发出TemporarilyUnavailable错误,并在两个地方增加temporarilyUnavailableErrors计数器:慢速查询日志和全职诊断数据收集(FTDC)。

多文档事务中的单个操作永远不会返回TemporarilyUnavailable错误。

通过修改temporarilyUnavailableBackoffBaseMstemporarilyUnavailableMaxRetries参数来调整写重试属性。

$addFields和$set允许空对象作为表达式img

从MongoDB 6.1开始,聚合阶段$addFields$set允许您在不使用$literal表达式的情况下将路径设置为空对象。

审计

MongoDB 6.1添加了以下集群审计事件:

从MongoDB 6.1开始,启动审计事件具有以下结构:

{
    originalClusterServerParameter: <original parameter value>,
    updatedClusterServerParameter": <new parameter value>
}

有关更多详细信息,请参阅审计事件操作、详细信息和结果。

服务器参数

从MongoDB 6.1开始,MongoDB添加了以下新参数:

报告问题

要报告问题,请参阅https://github.com/mongodb/mongo/wiki/Submit-Bug-Reports关于如何为MongoDB服务器或相关项目之一提交JIRA票据的指导。

原文:Release Notes for MongoDB 6.1

Copyright © 上海锦木信息技术有限公司 all right reserved,powered by Gitbook文件修订时间: 2023-09-01 17:10:26

results matching ""

    No results matching ""