本文目录#
引言#
MongoDB 4.0+ 支持多文档事务,但使用不当会影响性能。本文总结事务模型、性能指标与调优建议。
事务模型#
- 基于 WiredTiger 的 MVCC;
- 支持 Replica Set(4.0)与 Sharded Cluster(4.2);
session.startTransaction()->commitTransaction();- 操作数量与执行时间有限制。
性能指标#
transactionLifetimeLimitSeconds默认 60s;- 监控
db.serverStatus().transactions; Current Operations查看事务锁等待;metrics.transactions指标。
调优策略#
- 控制事务粒度,减少操作数量;
- 避免跨分片事务,优先单分片;
- 设置合理的
writeConcern与readPreference; - 使用偏好逻辑在应用层避免长事务;
- 对热点集合建立合适索引。
故障处理#
- 事务冲突触发重试:捕获
TransientTransactionError; - 网络中断使用
commitWithRetry模式; - 结合幂等逻辑确保重试安全。
总结#
MongoDB 事务适合小范围、一致性需求强的场景。控制事务大小与运行时间,并结合监控与重试逻辑,可以平衡一致性与性能。
参考资料#
- [1] MongoDB Transactions Guide. https://www.mongodb.com/docs/manual/core/transactions/
- [2] MongoDB Best Practices: Transactions.
本作品系原创,采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,转载请注明出处。
