Commit and abort behavior in MongoDB - Time & Space Complexity
When working with transactions in MongoDB, it is important to understand how the time to commit or abort changes as the amount of work grows.
We want to know how the cost of finishing or canceling a transaction scales with the number of operations inside it.
Analyze the time complexity of the following MongoDB transaction commit and abort code.
const session = client.startSession();
session.startTransaction();
try {
for (let i = 0; i < n; i++) {
await collection.insertOne({ item: i }, { session });
}
await session.commitTransaction();
} catch (error) {
await session.abortTransaction();
} finally {
await session.endSession();
}
This code inserts n documents inside a transaction, then tries to commit. If something goes wrong, it aborts the transaction.
Look for repeated actions that take time.
- Primary operation: Inserting n documents inside the transaction.
- How many times: The insert runs n times, once per document.
- Commit/abort: Happens once after all inserts or on error.
As the number of documents n grows, the total work grows mostly because of the inserts.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | About 10 inserts + 1 commit or abort |
| 100 | About 100 inserts + 1 commit or abort |
| 1000 | About 1000 inserts + 1 commit or abort |
Pattern observation: The total time grows roughly in direct proportion to n because each insert takes time, but commit or abort happens once.
Time Complexity: O(n)
This means the time to complete the transaction grows linearly with the number of operations inside it.
[X] Wrong: "Commit or abort takes the same time no matter how many operations are in the transaction."
[OK] Correct: Commit and abort must finalize all operations, so their time depends on how many operations were done inside the transaction.
Understanding how transaction commit and abort scale helps you reason about database performance and reliability in real projects.
"What if we batch multiple inserts into one operation inside the transaction? How would the time complexity change?"