DBAtlas · Atlas de operações de banco de dados

257 TransactionTooLarge: TransactionTooLarge

MongoDB

O que significa?

Uma transação multidocumento excedeu os limites permitidos de tamanho/quantidade de operações. A transação foi rejeitada porque as alterações acumuladas nela (entrada de oplog ou uso de memória) ultrapassaram o limite superior.

Por que acontece?

Modificar/inserir um grande número de documentos em uma única transação elevou demais o total de dados produzidos pela transação (por exemplo, o volume de alterações que precisa ser mantido no cache do WiredTiger, ou limites do servidor como transactionLimitBytes). Desde a 4.2, uma transação pode ser dividida em várias entradas de oplog, então o limite de 16 MB por entrada de oplog sozinho não é decisivo. Usar transações para migração de dados em massa/ETL atinge esse limite com facilidade.

Como resolver

Divida a transação em partes menores; faça commit de cada lote em uma transação separada. Transações multidocumento foram projetadas para ser curtas e pequenas; prefira fazer grandes atualizações em massa sem transações (de forma idempotente, bloco a bloco) ou dividi-las com bulk write. Evite modificar milhares de documentos em uma única transação.

Abrir no DBAtlas →

Mais entradas deste banco