{
  "slug": "full-page-write",
  "term": "Full-page write",
  "aliases": [
    "full_page_writes"
  ],
  "definition": "A PostgreSQL full-page write records a recoverable page image in WAL to support recovery from an incomplete data-page write.",
  "note": "With full_page_writes enabled, PostgreSQL normally logs a page image on its first modification after a checkpoint. The image provides a reconstruction basis that ordinary change records alone may not supply. This is a PostgreSQL mechanism, not a universal name for all torn-page defenses.",
  "status": "shipping",
  "advantages": [
    {
      "text": "Supports reconstruction of a page interrupted during writeback.",
      "citationIds": [
        "pg-settings"
      ]
    }
  ],
  "limitations": [
    {
      "text": "Adds WAL traffic; it is not a substitute for an independently recoverable backup.",
      "citationIds": [
        "pg-settings",
        "pg-archive"
      ]
    }
  ],
  "related": [
    "write-ahead-log",
    "database-checkpoint",
    "torn-write"
  ],
  "supersedes": [],
  "supersededBy": [],
  "firstSeen": null,
  "lastSeen": null,
  "citations": [
    {
      "id": "pg-settings",
      "title": "PostgreSQL 18: WAL settings",
      "url": "https://www.postgresql.org/docs/18/runtime-config-wal.html",
      "accessed": "2026-10-11"
    },
    {
      "id": "pg-archive",
      "title": "PostgreSQL 18: Continuous Archiving and Point-in-Time Recovery",
      "url": "https://www.postgresql.org/docs/18/continuous-archiving.html",
      "accessed": "2026-10-11"
    },
    {
      "id": "hesela-wal",
      "title": "WAL, checkpoints and torn pages: three different recovery guarantees",
      "url": "https://hesela.com/analyses/wal-checkpoints-torn-pages/",
      "accessed": "2026-10-11"
    }
  ],
  "updated": "2026-10-11"
}
