educative.io

WAL updating concept

When any write request comes which is first updated? WAL or the buffer manager. I search on chatGPT and it says WAL is updated. Can you please explain with the relevent reference attached?

Hi @Vishal_Yadav !!
In the context of Write-Ahead Logging (WAL), when a write request is made in a database system, the order in which updates are applied is crucial for ensuring data integrity and consistency, especially in the event of a crash. The fundamental principle of WAL is that changes to the actual data files (like database pages) on disk must not be written before the corresponding log records are safely stored. This means that the WAL is updated before the actual data in the buffer manager is modified.

Here’s the sequence of events when a write request is processed:

  1. Write Request Made: A write operation is requested by a transaction.

  2. Log Record Created: Before applying the changes to the data in the buffer manager, a log record for this operation is created. This log record typically contains information such as the transaction ID, the type of operation, and the before and after values (in the case of an update).

  3. Log Record Written to WAL: This log record is then written to the WAL. The WAL resides in a persistent storage (like a disk) which ensures that even if there is a system crash, the records of these operations will not be lost.

  4. Update Buffer Manager: Once the log record is safely written to the WAL, the actual data pages in the buffer manager (in memory) are updated. The buffer manager may later write these changes to the disk, but this write can happen asynchronously and is not required to happen immediately.

  5. Checkpointing: Periodically, a checkpoint process will ensure that all the data up to a certain point in the WAL has been written to the disk. This helps in reducing the amount of work needed during recovery.

  6. Crash Recovery: In the event of a crash, the database system will use the WAL to restore the database to a consistent state. This involves redoing operations from the log that have not been applied to the disk and undoing operations of transactions that were not completed.

I hope this helps. Happy Learning :blush: