PostgreSQL's data_checksums GUC has a thirteen-year history culminating in PostgreSQL 18 enabling checksums by default. When on, every data page carries a checksum verified on each read, protecting against silent corruption from bit rot or failing disks. Originally an initdb-only decision, PostgreSQL 12 added pg_checksums for offline enable/disable, and PostgreSQL 19 will allow online toggling via a background worker. Practical advice: check your existing clusters with SHOW data_checksums, enable if off using pg_checksums --enable during a maintenance window, and be aware that pg_upgrade requires source and target clusters to match on checksum settings.

4m read timeFrom postgr.es
Post cover image
Table of contents
The thirteen-year switch-flipWhat this means for you in practice
386 Impressions