首页 > 解决方案 > 并发事务的 maxTransactionLockRequestTimeoutMillis

问题描述

我试图更好地了解 MongoDB 事务的锁定获取行为。我有一个场景,两个并发事务尝试修改同一个文档。由于一个事务将首先获得文档上的写锁,因此第二个事务将遇到写冲突并失败。

我偶然发现了maxTransactionLockRequestTimeoutMillis此处记录的设置:https ://docs.mongodb.com/manual/reference/parameters/#param.maxTransactionLockRequestTimeoutMillis它指出:

多文档事务应等待获取事务中操作所需的锁的最长时间(以毫秒为单位)。

但是,更改此值似乎不会对观察到的写入冲突行为产生影响。事务 2 似乎并没有等待锁被再次释放,而是在另一个事务持有锁时立即发生写冲突(除了事务之外的并发写入,它将阻塞并等待锁)。

我是否正确理解配置的时间maxTransactionLockRequestTimeoutMillis不包括实际接收文档上的写锁定的行为,或者我的测试有什么问题?

标签: mongodb

解决方案


推荐阅读