Bird
Raised Fist0
MongoDBquery~20 mins

Transaction performance considerations in MongoDB - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Transaction Performance Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
Impact of Transaction Size on Performance

In MongoDB, how does increasing the size of a transaction (number of operations inside it) generally affect performance?

APerformance degrades because larger transactions hold locks longer and consume more resources.
BPerformance improves because more operations are grouped together reducing overhead.
CPerformance remains the same regardless of transaction size.
DPerformance improves only if the transaction contains write operations.
Attempts:
2 left
💡 Hint

Think about how holding locks longer affects other operations.

❓ query_result
intermediate
2:00remaining
Transaction Duration Measurement Query

Given a MongoDB collection orders with a field status, which query snippet correctly measures the total time taken by a transaction that updates multiple documents?

MongoDB
const session = client.startSession();
const start = Date.now();
session.startTransaction();
try {
  await orders.updateMany({ status: 'pending' }, { $set: { status: 'processed' } }, { session });
  await orders.updateMany({ status: 'processed' }, { $set: { status: 'completed' } }, { session });
  await session.commitTransaction();
} catch (e) {
  await session.abortTransaction();
}
const end = Date.now();
const duration = end - start;
AThe variable <code>duration</code> measures only the commitTransaction time.
BThe variable <code>duration</code> holds the total transaction time in milliseconds.
CThe variable <code>duration</code> will always be zero because transactions are asynchronous.
DThe variable <code>duration</code> holds the time only for the first updateMany operation.
Attempts:
2 left
💡 Hint

Consider when start and end are recorded relative to the transaction.

📝 Syntax
advanced
2:00remaining
Identify the Syntax Error in Transaction Usage

Which of the following MongoDB transaction code snippets contains a syntax error that prevents it from running?

MongoDB
const session = client.startSession();
session.startTransaction();
try {
  await collection.insertOne({ name: 'Alice' }, { session });
  await session.commitTransaction();
} catch (error) {
  await session.abortTransaction();
} finally {
  session.endSession();
}
ACalling <code>session.endSession()</code> inside finally block is invalid syntax.
BMissing async keyword before the function containing await calls.
CUsing <code>await</code> without <code>async</code> causes a syntax error.
DThe <code>startTransaction()</code> method requires a callback function.
Attempts:
2 left
💡 Hint

Check if await is used inside an async function.

❓ optimization
advanced
2:00remaining
Optimizing Transaction Performance by Reducing Contention

Which strategy best reduces transaction contention and improves performance in MongoDB?

AUse shorter transactions that touch fewer documents to reduce lock time.
BIncrease transaction size to batch more operations together.
CUse transactions only for read operations to avoid write locks.
DDisable journaling to speed up commit times.
Attempts:
2 left
💡 Hint

Think about how lock duration affects other operations.

🔧 Debug
expert
2:00remaining
Diagnosing a Transaction Timeout Issue

A MongoDB transaction frequently aborts with a timeout error. Which of the following is the most likely cause?

AThe client session was not started before the transaction.
BThe transaction uses an unsupported write concern level.
CThe transaction includes too many read operations causing network delays.
DThe transaction holds locks for too long due to large or slow operations.
Attempts:
2 left
💡 Hint

Consider what causes transactions to exceed timeout limits.

Practice

(1/5)
1. What is a key reason to use transactions in MongoDB?
easy
A. To keep data changes safe and consistent
B. To speed up query execution
C. To reduce disk space usage
D. To avoid indexing

Solution

  1. Step 1: Understand the purpose of transactions

    Transactions ensure that multiple related data changes happen together or not at all, keeping data consistent.
  2. Step 2: Identify the correct purpose

    Speeding up queries, reducing disk space, or avoiding indexing are not the main reasons for transactions.
  3. Final Answer:

    To keep data changes safe and consistent -> Option A
  4. Quick Check:

    Transactions = Data safety and consistency [OK]
Hint: Transactions ensure data safety, not speed [OK]
Common Mistakes:
  • Thinking transactions speed up queries
  • Confusing transactions with indexing
  • Believing transactions reduce disk space
2. Which of the following is the correct way to start a transaction in MongoDB using the shell?
easy
A. transaction.begin()
B. db.startTransaction()
C. startTransaction()
D. session.startTransaction()

Solution

  1. Step 1: Recall MongoDB transaction syntax

    Transactions are started on a session object using session.startTransaction().
  2. Step 2: Check other options

    db.startTransaction() and startTransaction() are invalid commands. transaction.begin() is not a MongoDB method.
  3. Final Answer:

    session.startTransaction() -> Option D
  4. Quick Check:

    Start transaction = session.startTransaction() [OK]
Hint: Transactions start on session objects with startTransaction() [OK]
Common Mistakes:
  • Trying to start transaction directly on db object
  • Using incomplete or wrong method names
  • Confusing transaction start with commit or abort
3. Consider this MongoDB transaction code snippet:
const session = client.startSession();
session.startTransaction();
await collection.insertOne({name: 'Alice'}, {session});
await session.commitTransaction();
session.endSession();
What is the expected result of this code?
medium
A. The document is inserted but not in a transaction
B. The document {name: 'Alice'} is inserted safely in a transaction
C. The code throws a syntax error
D. The transaction is aborted automatically

Solution

  1. Step 1: Analyze transaction steps

    The code starts a session, begins a transaction, inserts a document with the session, commits the transaction, and ends the session.
  2. Step 2: Understand transaction effect

    Because the insert is done inside the transaction and committed, the document is safely inserted as part of the transaction.
  3. Final Answer:

    The document {name: 'Alice'} is inserted safely in a transaction -> Option B
  4. Quick Check:

    Transaction insert + commit = safe insert [OK]
Hint: Insert inside transaction + commit = safe insert [OK]
Common Mistakes:
  • Ignoring the session option in insertOne
  • Assuming transaction auto-aborts without error
  • Confusing syntax errors with runtime behavior
4. You wrote this code but the transaction does not commit:
const session = client.startSession();
session.startTransaction();
await collection.insertOne({item: 'book'});
await session.commitTransaction();
session.endSession();
What is the main issue causing the transaction to fail?
medium
A. session.endSession() should be called before commitTransaction()
B. commitTransaction() must be called before startTransaction()
C. The insertOne operation is missing the session option
D. Transactions cannot include insertOne operations

Solution

  1. Step 1: Check transaction usage in code

    The insertOne call does not include the session option, so it runs outside the transaction.
  2. Step 2: Understand transaction requirements

    All operations inside a transaction must specify the session to be part of it. Without it, commitTransaction has no effect on that operation.
  3. Final Answer:

    The insertOne operation is missing the session option -> Option C
  4. Quick Check:

    Missing session in operation = transaction fails [OK]
Hint: Include session option in all operations inside transactions [OK]
Common Mistakes:
  • Calling commitTransaction before startTransaction
  • Ending session before committing
  • Thinking insertOne can't be in transactions
5. Which practice helps improve transaction performance in MongoDB when working with many documents?
hard
A. Keep transactions short and avoid long-running operations
B. Use transactions for every single write operation
C. Avoid using indexes inside transactions
D. Run multiple transactions in parallel on the same documents

Solution

  1. Step 1: Understand transaction performance impact

    Long transactions hold locks and resources longer, slowing performance and increasing conflicts.
  2. Step 2: Identify best practice

    Keeping transactions short reduces lock time and improves throughput. Using transactions for every write or running parallel conflicting transactions harms performance. Indexes improve query speed and are not avoided.
  3. Final Answer:

    Keep transactions short and avoid long-running operations -> Option A
  4. Quick Check:

    Short transactions = better performance [OK]
Hint: Keep transactions short to boost speed and reduce conflicts [OK]
Common Mistakes:
  • Using transactions for every write unnecessarily
  • Avoiding indexes inside transactions
  • Running conflicting transactions in parallel
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard