Logging methods ensure recoverability by tracking changes in transactions.
Logging Scheme | Description | Pros | Cons |
---|---|---|---|
Physical Logging | Logs changes at the byte level (e.g., git diff ) |
Simple to implement | Large log size |
Logical Logging | Logs high-level SQL operations (e.g., UPDATE salary SET x = 100 ) |
Small log size | Harder to recover |
Physiological Logging | Hybrid of physical & logical logging; logs page-level changes | Best balance | Implementation complexity |
Comparison Factor | Physical Logging | Logical Logging |
---|---|---|
Log Size | Larger | Smaller |
Ease of Implementation | Easier | Harder |
Crash Recovery Complexity | Simple (Redo changes directly) | Hard (Re-execute queries) |
Concurrency Handling | Better (handles individual pages) | Worse (uncertainty in execution order) |
Most modern DBMSs use physiological logging for efficiency.
Approach | Description |
---|---|
All-at-Once Flushing | Waits until a transaction fully commits before writing logs. (No need to store abort records) |
Incremental Flushing | Allows the DBMS to write log records before a transaction commits |
Optimization: Group Commit