生产注意事项 (分片集群)
本页面 中
从版本4.2开始,MongoDB提供了对分片群集执行多文档事务的功能。
_对于MongoDB 4.2部署(副本集和分片群集)上的事务,_客户必须使用为MongoDB 4.2更新的MongoDB驱动程序。
注意
您的驱动程序可能会返回其他错误。 有关详细信息,请参阅驱动程序的文档。
Error Code / 错误码 | Error Message / 错误信息 |
---|---|
251 | cannot continue txnId -1 for session ... with txnId 1 |
50940 | cannot commit with no participants |
针对单个分片的事务应具有与副本集事务相同的性能。
影响多个分片的事务会产生更高的性能成本。
注意
在分片群集上,如果任何涉及的分片包含仲裁者,那么跨越多个分片的事务将出错并中止。
要指定时间限制,请在
commitTransaction
上指定maxTimeMS
限制。注意
如果任何事务操作读取或写入包含仲裁程序的分片,则其写操作跨越多个分片的事务将出错并中止。
对于具有三成员PSA的分片群集,您可以
禁用读策略“majority”
(如--enableMajorityReadConcern false
或replication.enableMajorityReadConcern:false
)以避免缓存压力。- 在分片集群上,如果事务涉及的分片禁用读策略“majority”,则您不能设置读策略
“snapshot”
用于事务。对于该事务您只能使用读策略的“ local”
或“majority”
。如果使用读策略“ snapshot”
,则事务错误并中止。当enableMajorityReadConcern = false时,分片群集不支持`readConcern level'snapshot'。如果事务的任何读或写操作涉及到禁用读策略“majority”的分片,则其写操作跨越多个分片的事务将出错并中止。 - 要检查读策略“majority”是否被禁用,