257 TransactionTooLarge: TransactionTooLarge
MongoDBQue signifie cette erreur ?
Une transaction multi-documents a dépassé les limites autorisées de taille/de nombre d'opérations. La transaction a été refusée car les modifications accumulées (entrée d'oplog ou utilisation mémoire) ont dépassé la limite supérieure.
Cause
La modification/l'insertion d'un grand nombre de documents dans une seule transaction a fait trop grossir le total des données produites par la transaction (par ex. le volume de modifications à conserver dans le cache WiredTiger, ou des limites serveur comme transactionLimitBytes). Depuis 4.2, une transaction peut être répartie sur plusieurs entrées d'oplog, la limite de 16 MB par entrée d'oplog n'est donc pas à elle seule déterminante. Utiliser des transactions pour une migration de données en masse/de l'ETL atteint facilement cette limite.
Comment la corriger
Découpez la transaction en morceaux plus petits ; validez chaque lot dans une transaction distincte. Les transactions multi-documents sont conçues pour être courtes et petites ; préférez effectuer les grosses mises à jour en masse sans transaction (de façon idempotente, bloc par bloc) ou les découper avec bulk write. Évitez de modifier des milliers de documents dans une seule transaction.
Autres entrées pour ce moteur
- 216 ElectionInProgressElectionInProgress
- 225 TransactionTooOldTransactionTooOld
- 246 SnapshotUnavailableSnapshotUnavailable
- 276 IndexBuildAbortedIndexBuildAborted
- 86 IndexKeySpecsConflictIndexKeySpecsConflict
- 166 CommandNotSupportedOnViewCommandNotSupportedOnView
- 168 InvalidPipelineOperatorInvalidPipelineOperator