257 TransactionTooLarge: TransactionTooLarge
MongoDBWas bedeutet das?
Eine Multi-Document-Transaktion hat die erlaubten Limits für Größe/Operationsanzahl überschritten. Die Transaktion wurde abgelehnt, weil die darin angesammelten Änderungen (Oplog-Eintrag oder Speichernutzung) die Obergrenze überschritten haben.
Ursache
Das Ändern/Einfügen einer großen Zahl von Dokumenten in einer einzigen Transaktion hat die von der Transaktion erzeugte Datenmenge zu stark anwachsen lassen (z. B. das Volumen der Änderungen, das im WiredTiger-Cache gehalten werden muss, oder Serverlimits wie transactionLimitBytes). Seit 4.2 kann eine Transaktion auf mehrere Oplog-Einträge verteilt werden, daher ist das 16-MB-Limit für Oplog-Einträge allein nicht entscheidend. Transaktionen für Massendatenmigration/ETL zu nutzen, erreicht dieses Limit leicht.
Lösung
Teile die Transaktion in kleinere Stücke auf; committe jeden Batch in einer eigenen Transaktion. Multi-Document-Transaktionen sind für kurze, kleine Vorgänge gedacht; führe große Massenupdates bevorzugt ohne Transaktionen durch (idempotent, blockweise) oder teile sie per Bulk Write auf. Vermeide es, Tausende Dokumente in einer einzigen Transaktion zu ändern.
Weitere Einträge zu dieser Datenbank
- 216 ElectionInProgressElectionInProgress
- 225 TransactionTooOldTransactionTooOld
- 246 SnapshotUnavailableSnapshotUnavailable
- 276 IndexBuildAbortedIndexBuildAborted
- 86 IndexKeySpecsConflictIndexKeySpecsConflict
- 166 CommandNotSupportedOnViewCommandNotSupportedOnView
- 168 InvalidPipelineOperatorInvalidPipelineOperator