Write-Ahead Log
রাইট-অ্যাহেড লগ
Data page-এর আগে change-টা log-এ durable করে নেওয়ার শাসন — crash-পরে replay করেই সব ফেরে।
also: wal, redo-log
Rule একটাই: data-র আগে log। Dirty page ডিস্কে যেতে পারে, কিন্তু তার change-এর log record আগে fsync হতে হবে।
- Commit = WAL flush, data page flush নয় — তাই commit cheap
- Sequential append — random page write-এর চেয়ে ডিস্কে বহুগুণ সস্তা
- Recovery: last checkpoint থেকে redo; uncommitted undo (ARIES)
SELECT pg_current_wal_lsn(); -- এখন কোথায় দাঁড়িয়ে
SELECT pg_walfile_name(pg_current_wal_lsn());
WAL-ই replication-এর খাদ্যও — streaming replication মূলত এই log দূরে পাঠানো। এক log, তিন কাজ: durability, recovery, replication।