DBAtlas · Атлас эксплуатации баз данных

257 TransactionTooLarge: TransactionTooLarge

MongoDB

Что это значит?

Многодокументная транзакция превысила допустимые лимиты размера/числа операций. Транзакция отклонена, так как накопленные в ней изменения (запись oplog или использование памяти) превысили верхний лимит.

Почему возникает?

Изменение/вставка большого числа документов в одной транзакции слишком увеличили общий объём данных, порождаемых транзакцией (например, объём изменений, который нужно держать в кеше WiredTiger, или серверные лимиты, такие как transactionLimitBytes). Начиная с 4.2 транзакция может разбиваться на несколько записей oplog, поэтому лимит записи oplog в 16 MB сам по себе не решающий. Использование транзакций для массовой миграции данных/ETL легко упирается в этот лимит.

Как исправить

Разбейте транзакцию на меньшие части; фиксируйте каждый пакет в отдельной транзакции. Многодокументные транзакции рассчитаны на краткость и малый размер; крупные массовые обновления предпочтительно выполнять без транзакций (идемпотентно, по частям) или разбивать с помощью bulk write. Избегайте изменения тысяч документов в одной транзакции.

Открыть в DBAtlas →

Ещё по этой СУБД