Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
82 commits
Select commit Hold shift + click to select a range
4a5adf8
feat(heap): place inserts by clustered index order
Komzpa Apr 29, 2026
a9ad872
fix(heap): keep clustered placement to inserts
Komzpa Apr 30, 2026
38aa6f3
refactor(heap): gate clustered target probes explicitly
Komzpa Apr 30, 2026
6e12769
fix(heap): probe clustered btree ranges from both ends
Komzpa Apr 30, 2026
2b21ca6
fix(heap): reserve budget for clustered range tails
Komzpa Apr 30, 2026
2004694
fix(heap): reserve clustered range candidate slots
Komzpa Apr 30, 2026
c5b0e4b
refactor(heap): compare clustered input indexes explicitly
Komzpa Apr 30, 2026
2f34ea4
fix(heap): bound clustered GiST sort memory
Komzpa Apr 30, 2026
0b14d8f
fix(heap): bound clustered candidate helper
Komzpa Apr 30, 2026
509c38e
fix(heap): initialize GiST include sort attrs
Komzpa Apr 30, 2026
e9d848e
test(heap): report clustered diff timings
Komzpa Apr 30, 2026
ea09d1a
fix(heap): reuse clustered multi-insert target
Komzpa Apr 30, 2026
e8227be
test(heap): add repeated clustered benchmark wrapper
Komzpa Apr 30, 2026
ced31f1
fix(heap): cache clustered batch prefix targets
Komzpa Apr 30, 2026
53df2d7
perf(heap): hash clustered prefix target cache
Komzpa Apr 30, 2026
a063574
perf(heap): cheapen clustered batch target probe
Komzpa Apr 30, 2026
3ae3acc
perf(heap): cache single-key clustered probes
Komzpa Apr 30, 2026
6b27599
test(heap): benchmark hot clustered duplicate inserts
Komzpa Apr 30, 2026
e3748b6
perf(heap): skip clustered probes for hot batch prefixes
Komzpa Apr 30, 2026
2df1fd3
perf(heap): avoid hot-prefix rechecks in multi-insert
Komzpa Apr 30, 2026
f82c9f5
perf(heap): short-circuit fully hot clustered batches
Komzpa Apr 30, 2026
0f9ce5c
test(clustered-write): keep synthetic bench artifacts small
Komzpa Apr 30, 2026
3170b6b
docs(clustered-write): record rejected benchmark experiments
Komzpa Apr 30, 2026
1f5cc50
perf(heap): bypass prefix cache for all-equal batches
Komzpa Apr 30, 2026
ff5da43
fix(heap): guard raw prefix comparison by value
Komzpa Apr 30, 2026
7130df2
docs(clustered-write): record leading-run rejection
Komzpa Apr 30, 2026
3c8c618
docs(clustered-write): record prefix-cache rejection
Komzpa Apr 30, 2026
e959455
fix(bench): harden osm2pgsql diff preparation
Komzpa Apr 30, 2026
01cf12d
fix(bench): reserve heap space for clustered osm2pgsql import
Komzpa Apr 30, 2026
dd37d31
perf(bench): sort clustered osm2pgsql import by key
Komzpa Apr 30, 2026
35b8218
docs(clustered-write): reject bounded osm2pgsql sort
Komzpa Apr 30, 2026
2c9097b
fix(bench): preserve osm2pgsql generated cluster key
Komzpa Apr 30, 2026
b834bac
docs(clustered-write): reject varlena prefix hash cache
Komzpa Apr 30, 2026
0d27067
test(clustered-write): add text-key synthetic benchmark
Komzpa Apr 30, 2026
bf0f178
perf(heap): skip all-equal text clustered batches
Komzpa Apr 30, 2026
c16c120
test(clustered-write): benchmark heap fillfactor reserve
Komzpa Apr 30, 2026
cc9f260
test(clustered-write): report hot overflow span
Komzpa Apr 30, 2026
c9ef799
perf(heap): compact clustered overflow inserts
Komzpa Apr 30, 2026
9dd45d1
perf(heap): cache clustered overflow prefixes
Komzpa Apr 30, 2026
c51b477
perf(heap): bound clustered reserve overflow
Komzpa Apr 30, 2026
e0cfc21
perf(heap): cache varlena clustered overflow prefixes
Komzpa Apr 30, 2026
71dbdbf
fix(heap): keep clustered overflow cache inline
Komzpa Apr 30, 2026
0ba3219
docs(heap): record rejected clustered target cache
Komzpa Apr 30, 2026
341411c
perf(heap): defer clustered overflow after reserve hits
Komzpa Apr 30, 2026
32b0a89
docs(heap): record rejected overflow metadata cache
Komzpa Apr 30, 2026
7c64e8e
docs(heap): record rejected reserve threshold tuning
Komzpa Apr 30, 2026
f2a9758
perf(heap): report clustered overflow tail span
Komzpa Apr 30, 2026
2272e8f
perf(heap): capture synthetic bench environment
Komzpa Apr 30, 2026
73de84d
perf(heap): report benchmark timing medians
Komzpa Apr 30, 2026
9213439
docs(heap): record current median benchmark baseline
Komzpa Apr 30, 2026
2ce0060
docs(heap): record rejected singleton prefix skip
Komzpa Apr 30, 2026
fb4885b
perf(heap): compare copy and insert synthetic diffs
Komzpa Apr 30, 2026
92274de
fix(heap): keep clustered copy page boundaries
Komzpa Apr 30, 2026
c735945
perf(heap): hash text clustered copy prefixes
Komzpa Apr 30, 2026
9830aaa
perf(heap): lazily expand single-row clustered probes
Komzpa Apr 30, 2026
dd02106
docs(heap): record current copy benchmark results
Komzpa Apr 30, 2026
d32e89e
perf(heap): keep clustered copy fallback runs packed
Komzpa Apr 30, 2026
01d0ac6
docs(heap): record rejected copy target cache shortcut
Komzpa Apr 30, 2026
2bc6e00
docs(heap): record rejected lazy prefix count experiment
Komzpa Apr 30, 2026
321e2e1
docs(heap): record rejected prefix hash slot reuse
Komzpa Apr 30, 2026
abe225c
docs(heap): record rejected presorted qsort skip
Komzpa Apr 30, 2026
9dcbe8e
fix(heap): avoid multi-hot prefix cleanup crash
Komzpa Apr 30, 2026
5c8bbc6
docs(clustered-write): record rejected prefix threshold experiment
Komzpa Apr 30, 2026
057cf48
perf(clustered-write): measure hot read benchmark
Komzpa Apr 30, 2026
ad5842a
perf(clustered-write): measure updated hot reads
Komzpa May 1, 2026
95a48aa
perf(clustered-write): benchmark hot update diffs
Komzpa May 1, 2026
3d7bf1c
perf(heap): skip fsm for too-hot clustered copy
Komzpa May 1, 2026
3a09c08
perf(clustered-write): benchmark update payload size
Komzpa May 1, 2026
1693243
docs(clustered-write): record bulk reserve experiment
Komzpa May 1, 2026
181ee00
docs(clustered-write): record ordered hot update copy
Komzpa May 1, 2026
fcf3b21
docs(clustered-write): record ordered text hot update copy
Komzpa May 1, 2026
093a028
perf(clustered-write): stage ordered osm2pgsql copy
Komzpa May 1, 2026
2069198
perf(clustered-write): defer osm2pgsql staged index
Komzpa May 1, 2026
4277197
docs(clustered-write): record rejected staged plain key
Komzpa May 1, 2026
0b1c2f8
perf(clustered-write): index staged osm2pgsql deletes
Komzpa May 1, 2026
5a2752e
chore(clustered-write): bound osm2pgsql benchmark artifacts
Komzpa May 1, 2026
1f72717
perf(clustered-write): repeat osm2pgsql read benchmark
Komzpa May 1, 2026
6f64870
perf(clustered-write): create staged delete index lazily
Komzpa May 1, 2026
7bf7cc4
perf(clustered-write): diagnose osm2pgsql append cost
Komzpa May 1, 2026
20329a1
perf(clustered-write): expose osm2pgsql work_mem knob
Komzpa May 1, 2026
c281800
Merge remote-tracking branch 'origin/master' into codex/clustered-wri…
Komzpa May 1, 2026
9796dec
fix(heap): keep clustered overflow probes scoped
Komzpa May 14, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions doc/src/sgml/ref/cluster.sgml
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,18 @@ CLUSTER [ ( <replaceable class="parameter">option</replaceable> [, ...] ) ] [ <r
are periodically reclustered.
</para>

<para>
When a table has a remembered clustered btree index, later row insertions
whose leading clustered key is available try to place new heap tuples near
existing heap pages found from that clustered key before falling back to the
normal free-space and relation-extension placement rules. Bulk inserts can
also use access-method-specific ordering support, such as GiST sort support,
when it is available. These heuristics reduce how quickly freshly inserted
rows drift away from the clustered order, but they are only best-effort;
updates, deletes, page-level free space, and concurrent writes can still
make periodic reclustering useful.
</para>

<para>
Each backend running <command>CLUSTER</command> will report its progress
in the <structname>pg_stat_progress_cluster</structname> view. See
Expand Down
Loading