DBAtlas · 数据库运维图谱

257 TransactionTooLarge: TransactionTooLarge

MongoDB

含义

多文档事务超出了允许的大小/操作数限制。由于事务中累积的变更(oplog 条目或内存使用)超过了上限,事务被拒绝。

原因

在单个事务中修改/插入大量文档,使事务产生的总数据量过高(例如必须保存在 WiredTiger 缓存中的变更量,或 transactionLimitBytes 等服务器限制)。自 4.2 起事务可以拆分到多个 oplog 条目中,因此仅 16 MB 的 oplog 条目限制并不起决定作用。将事务用于批量数据迁移/ETL 很容易达到此限制。

解决方法

将事务拆分为更小的部分;每个批次在单独的事务中提交。多文档事务的设计初衷是短小;大型批量更新优先在不使用事务的情况下进行(幂等、逐块处理),或用 bulk write 拆分。避免在单个事务中修改成千上万的文档。

在 DBAtlas 中打开 →

同一数据库的其他条目