~/talk

Database in Distress: Testing and Repairing Different Types of Database Corruption

Talkat PGDay Lowlands 2025 · on Friday, 2025-09-12· [databases]
slides:none on file

PostgreSQL files on some systems show silent damage that only appears when a specific page or tuple is read, causing errors like "invalid page in block", absurd transaction IDs, or session segfaults. A Python corruption simulator reproduces header, item pointer array, and tuple-body corruption and the talk shows real pageinspect outputs that reveal how offsets and t_ctid become nonsensical. Repairs use per-page zeroing with zero_damaged_pages = on, heap tuple surgery and row-by-row salvaging; checksums enabled by default in Postgres 18 prevent many of these failures.

AI-written summary · about

  1. 0:00Introduction and motivation
  2. 3:55Checksums and their importance
  3. 11:59Anatomy of a data block
  4. 16:22Corrupting item IDs and crashes
  5. 19:19Corrupting tuples and errors
  6. 25:01Corrupted sequences
  7. 26:46Curing corrupted data
  8. 30:28Salvaging data row by row
  9. 31:14Improving repair processes
  10. 34:11Q&A session
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.