COMMIT and ROLLBACK behavior in SQL - Time & Space Complexity
When working with transactions in databases, it is important to understand how the time to complete operations changes as the amount of data grows.
We want to know how the cost of committing or rolling back changes grows with the size of the transaction.
Analyze the time complexity of the following SQL transaction commands.
BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE account_id = 2;
-- More updates here ...
COMMIT;
-- or
ROLLBACK;
This snippet shows a transaction that updates multiple rows and then either saves all changes with COMMIT or cancels them with ROLLBACK.
Look at what repeats during the transaction.
- Primary operation: Updating rows inside the transaction.
- How many times: Once per row updated, which can be many times depending on data.
The COMMIT or ROLLBACK itself processes all these changes at once.
As the number of updated rows grows, the work to commit or rollback also grows.
| Input Size (rows updated) | Approx. Operations |
|---|---|
| 10 | Processes 10 changes |
| 100 | Processes 100 changes |
| 1000 | Processes 1000 changes |
Pattern observation: The work grows roughly in direct proportion to the number of changes made.
Time Complexity: O(n)
This means the time to commit or rollback grows linearly with the number of changes in the transaction.
[X] Wrong: "COMMIT or ROLLBACK always takes the same time no matter how many rows changed."
[OK] Correct: The database must process each change to save or undo it, so more changes mean more work and longer time.
Understanding how transaction commands scale helps you explain database behavior clearly and shows you grasp practical performance considerations.
"What if the transaction only updates a single row but includes complex triggers? How might that affect the time complexity?"
Practice
COMMIT command do in a database transaction?Solution
Step 1: Understand the purpose of COMMIT
The COMMIT command finalizes all changes made in the current transaction and saves them permanently in the database.Step 2: Compare with other options
ROLLBACK undoes changes, starting a transaction is done by BEGIN or START TRANSACTION, and locking is a different operation.Final Answer:
It saves all changes made during the transaction permanently. -> Option DQuick Check:
COMMIT = Save changes permanently [OK]
- Confusing COMMIT with ROLLBACK
- Thinking COMMIT starts a transaction
- Assuming COMMIT locks the database
Solution
Step 1: Identify the command to undo changes
The ROLLBACK command is used to undo all changes made since the last COMMIT.Step 2: Check syntax correctness
ROLLBACK; is the correct syntax. COMMIT; saves changes, UNDO; and SAVE; are not valid SQL commands for this purpose.Final Answer:
ROLLBACK; -> Option BQuick Check:
ROLLBACK = Undo changes [OK]
- Using COMMIT to undo changes
- Assuming UNDO is a valid SQL command
- Confusing SAVE with COMMIT
BEGIN TRANSACTION;
INSERT INTO users (id, name) VALUES (1, 'Alice');
ROLLBACK;
SELECT * FROM users WHERE id = 1;
What will the SELECT query return?
Solution
Step 1: Analyze the transaction commands
The INSERT adds a row with id=1 and name='Alice', but then ROLLBACK undoes this change.Step 2: Understand the effect of ROLLBACK on SELECT
Since the insert was rolled back, the row does not exist. The SELECT query will find no rows with id=1.Final Answer:
No rows -> Option AQuick Check:
ROLLBACK removes inserted rows [OK]
- Assuming inserted row remains after ROLLBACK
- Thinking ROLLBACK affects only future queries
- Confusing ROLLBACK with COMMIT
BEGIN TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 5;
COMMIT;
ROLLBACK;
What is the effect of the final ROLLBACK?
Solution
Step 1: Understand COMMIT effect
COMMIT saves all changes permanently, so the UPDATE is finalized.Step 2: Analyze ROLLBACK after COMMIT
ROLLBACK after COMMIT does nothing because there is no active transaction to undo.Final Answer:
It has no effect because changes were already committed. -> Option CQuick Check:
ROLLBACK after COMMIT = no effect [OK]
- Thinking ROLLBACK undoes committed changes
- Assuming ROLLBACK causes error after COMMIT
- Confusing order of commands
1. BEGIN TRANSACTION;
2. INSERT INTO orders VALUES (101, 'Book');
3. INSERT INTO orders VALUES (102, 'Pen');
4. -- If both inserts succeed, then ___;
5. -- If any insert fails, then ___;
Solution
Step 1: Understand transaction control
To save changes only if all inserts succeed, you COMMIT after success and ROLLBACK if any fail.Step 2: Match commands to conditions
Line 4 should be COMMIT to save changes; line 5 should be ROLLBACK to undo partial changes.Final Answer:
4: COMMIT; 5: ROLLBACK; -> Option AQuick Check:
COMMIT on success, ROLLBACK on failure [OK]
- Swapping COMMIT and ROLLBACK roles
- Committing even if inserts fail
- Rolling back after successful inserts
Ready to prove it?
Pass the test and this pattern moves unknown
