<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/all-your-gucs-in-a-row-full-page-writes-iwrk5j2gz" -->

---
title: All Your GUCs in a Row: full_page_writes | daily.dev
description: PostgreSQL's `full_page_writes` GUC controls whether the database logs entire 8kB pages to WAL after each checkpoint, protecting against torn page writes...
canonical: https://daily.dev/posts/all-your-gucs-in-a-row-full-page-writes-iwrk5j2gz
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: All Your GUCs in a Row: full_page_writes | daily.dev
og:description: PostgreSQL's `full_page_writes` GUC controls whether the database logs entire 8kB pages to WAL after each checkpoint, protecting against torn page writes...
og:url: https://daily.dev/posts/all-your-gucs-in-a-row-full-page-writes-iwrk5j2gz
og:image: https://api.daily.dev/og/posts/IwrK5j2GZ.png
og:image:alt: All Your GUCs in a Row: full_page_writes
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# All Your GUCs in a Row: full_page_writes

**[Planet PostgreSQL](https://daily.dev/sources/planet-postgresql)** · 6 min read · 0 upvotes · 0 comments

## Summary

PostgreSQL's `full_page_writes` GUC controls whether the database logs entire 8kB pages to WAL after each checkpoint, protecting against torn page writes caused by mismatched sector sizes. Because WAL records are physiological (not byte-level diffs), recovery cannot safely apply changes to a partially-written page, so PostgreSQL logs a full page image on the first modification after each checkpoint. This increases WAL volume in a sawtooth pattern tied to checkpoint intervals. Counterintuitively, shortening checkpoint intervals worsens this overhead; lengthening them and enabling `wal_compression` (lz4 or zstd) are the correct levers. Turning `full_page_writes` off is only defensible on storage that guarantees atomic 8kB writes (e.g., ZFS with matching recordsize), but the failure mode is silent data corruption discovered months later. Additionally, `pg_basebackup` and `pg_rewind` re-enable or require full page writes regardless of the setting, because they face torn-read hazards during concurrent writes. The recommendation is to leave it on.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://postgr.es/p/9qq>

## Similar posts on daily.dev

- [All Your GUCs in a Row: min\_wal\_size](https://daily.dev/posts/all-your-gucs-in-a-row-min-wal-size-qq6biabdi) · Planet PostgreSQL · 1 upvotes · 0 comments
- [All Your GUCs in a Row: data\_sync\_retry](https://daily.dev/posts/all-your-gucs-in-a-row-data-sync-retry-i7zey1kmj) · Planet PostgreSQL · 0 upvotes · 0 comments
- [How lakebase architecture delivers 5x faster Postgres writes](https://daily.dev/posts/how-lakebase-architecture-delivers-5x-faster-postgres-writes-jdggqygrz) · databricks · 100 upvotes · 1 comments
- [Everyone gets faster writes: Turning off FPW on Neon](https://daily.dev/posts/everyone-gets-faster-writes-turning-off-fpw-on-neon-czmc7c8hw) · Neon · 59 upvotes · 0 comments
- [PostgreSQL Recovery Internals](https://daily.dev/posts/postgresql-recovery-internals-fyfrz2lny) · CYBERTEC PostgreSQL · 3 upvotes · 0 comments

---

Tags: [#postgresql](https://daily.dev/tags/postgresql)

[View this post on daily.dev](https://daily.dev/posts/all-your-gucs-in-a-row-full-page-writes-iwrk5j2gz)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"All Your GUCs in a Row: full_page_writes","url":"https://daily.dev/posts/all-your-gucs-in-a-row-full-page-writes-iwrk5j2gz","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/all-your-gucs-in-a-row-full-page-writes-iwrk5j2gz"},"datePublished":"2026-07-25T01:04:22.414Z","dateModified":"2026-07-25T02:14:33.401Z","description":"PostgreSQL's `full_page_writes` GUC controls whether the database logs entire 8kB pages to WAL after each checkpoint, protecting against torn page writes...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/7f414d5dfb0636e7a11837ddc9466aa6?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/7f414d5dfb0636e7a11837ddc9466aa6?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Planet PostgreSQL","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Planet PostgreSQL","logo":"https://media.daily.dev/image/upload/logos/placeholder.jpg","url":"https://daily.dev/sources/planet-postgresql"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/all-your-gucs-in-a-row-full-page-writes-iwrk5j2gz","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"postgresql","timeRequired":"PT6M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Planet PostgreSQL","item":"https://daily.dev/sources/planet-postgresql"},{"@type":"ListItem","position":3,"name":"All Your GUCs in a Row: full_page_writes"}]}
```

