Cơ sở dữ liệu 22/09/2026 6 phút

wal_compression và full_page_writes: giảm WAL an toàn, và cái bẫy tắt full_page_writes

full_page_writes tạo ra full-page image trong WAL (chống torn page); wal_compression nén chúng lại. Đo thật: bật wal_compression giảm WAL 17-30% tuỳ độ nén của dữ liệu, FPI vẫn còn nên vẫn an toàn. Tắt full_page_writes giảm 35% nhưng bỏ hẳn chống torn page — gần như không bao giờ nên làm. PostgreSQL 16.

Lập trình 22/09/2026 8 phút

WAL và checkpoint đo thật: một dòng UPDATE ngay sau checkpoint tốn 6.160 byte nhật ký, lần hai 120 byte; full_page_writes chiếm 84% WAL của pgbench; max_wal_size 64 MB gây 66 checkpoint trong 40 giây, TPS giảm 39% và WAL gấp đôi

Đo WAL bằng pg_current_wal_lsn trước và sau từng lệnh trên PostgreSQL 16: insert 160 byte mỗi dòng, có index 226, update ngay sau checkpoint 381 so với 243 lần hai, đổi khoá index 453. Ở mức một dòng: update đầu tiên sau checkpoint ghi 6.160 byte vì chụp cả trang 8 KB, update thứ hai cùng trang 120 byte. pgbench 10 giây sinh 390 MB WAL với full_page_writes bật và 62 MB khi tắt. Bốn cấu hình checkpoint dưới cùng tải 40 giây: mặc định 10.632 TPS với 2 checkpoint; max_wal_size 64 MB gây 66 checkpoint, 6.483 TPS và 2.133 MB WAL; completion target 0.1 giữ TPS trung bình nhưng có giây tụt còn 2.966.