Add matched GIN baseline for sustained writes and count queries - #25
Merged
Merged
Conversation
bweis
added this pull request to stack #22
September 19, 2026 07:29
bweis
force-pushed
the
bench/gin-mutation-baseline
branch
from
September 19, 2026 07:30
583ef38 to
796bb7a
Compare
bweis
removed this pull request from stack #22
September 19, 2026 07:30
bweis
added this pull request to stack #26
September 19, 2026 07:30
bweis
force-pushed
the
bench/gin-mutation-baseline
branch
from
September 19, 2026 07:38
b27cb08 to
e4c9693
Compare
bweis
force-pushed
the
bench/gin-mutation-baseline
branch
from
September 19, 2026 07:47
e4c9693 to
a1eba59
Compare
bweis
marked this pull request as ready for review
September 19, 2026 07:50
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Add a sustained mutation/count profile shared by Stannum and PostgreSQL GIN, with explicit fastupdate-on/off variants. All use the live-row writer protocol from #24 and independent exact membership checks. Ranking is excluded because PostgreSQL native ranking and BM25 differ.
The private-cluster campaign alternates engine order and records pending-list pages/tuples, reader/writer scheduling lag, affected rows, repeated maintenance, physical size and traffic-versus-drain WAL. Cross-engine guards reject mismatched workload/server settings. This baseline uses an expression GIN index and forced index access, not a stored tsvector or unrestricted planner configuration.
Validation: 94 benchmark tests, six attribution-tool tests, and the 162-file source-header check pass. All 18 local windows passed exact membership and row accounting: 12 synthetic windows plus six 90-second windows on the verified 100k Wikipedia corpus. Stannum passed post-cleanup deep verification. Two synthetic pair comparisons were excluded by the strict harness-hash guard; this is documented, and the campaign now rejects source edits between windows.
On Wikipedia, all engines delivered about 198 actual mutations/sec. Stannum delivered about 20 count queries/sec while both expression-GIN variants were read-overloaded at about 3.5/sec. Stannum's search index was about three times larger. These are expression-GIN, forced-index results; stored tsvector and normal-planner baselines are the next comparison, not a universal speedup claim. Full report: docs/benchmarks/gin-mutation-results.md; compact measurements: gin-baseline-results.json.
CI also exposed an existing VACUUM RSS-sampling startup race. A delayed-ps native reproduction failed before the readiness handshake and passed after it. Baseline RSS and in-flight samples are now reported separately; absent in-flight samples do not masquerade as peak memory. Latest CI is pending.
#23 and #24 are merged; this PR is now based on main. No runtime index code changed.