---
title: Reclaim nfl_plays bloat, then re-decide the data-view engine
type: task
status: planned
description: >-
  nfl_plays carries roughly 3x heap and 4x index bloat; repack it partition by partition with
  operator approval, then re-measure Postgres against standalone DuckDB to close the engine
  question.
base_uri: user:task/league/reclaim-nfl-plays-bloat-and-re-decide-data-view-engine.md
created_at: '2026-09-30T05:59:36.403Z'
entity_id: 94e0e00b-6daa-405c-9006-11d2fe40f168
owner_identity_uri: █████████████████████████
priority: Medium
public_read: true
tags:
  - user:tag/league-xo-football.md
updated_at: '2026-09-30T05:59:36.403Z'
visibility_analyzed_at: '2026-11-05T23:49:55.738Z'
---

# Reclaim nfl_plays bloat, then re-decide the data-view engine

`nfl_plays` partitions carried 4,414 MB of heap and 3,229 MB of indexes on 2026-09-30, against 1,560 MB and 787 MB in a fresh 2026-08-04 restore. The standalone-DuckDB question was left open until the plain-Postgres fixes land, because they attack the same scan cost.

## Plan

- [ ] Report which partitions carry the bloat, find what rewrites rows, and repack partition by partition with an operator-approved plan — [[████████████████████████-██-███████████████-███-█████-████████]]
- [ ] After the repack and [[user:task/league/data-views/fix-data-view-partition-pruning.md]] are deployed, re-measure both engines fresh and close or scope the DuckDB question — [[████████████████████████-██-███████████████████-██████████-██████-███-████-████████]]

## Notes

Production locks need operator approval. The primary moved hosts during [[████████████████████████-██████-██████████]] via `pg_basebackup`, which copies bloat byte for byte, so the migration did not reclaim it.
