Summary
The all-buckets checkpoint scan excludes the recycle bin via BucketId != :rb. Negative inequality filters are less index-friendly than positive inclusion filters and may bypass the primary checkpoint index, causing a measurable gap vs bucket-qualified reads.
Why this matters
- Negative filters (
!=) are less index-friendly than positive inclusion.
- Bucket-qualified reads use the primary checkpoint index; all-buckets reads may bypass it.
- The performance gap is already visible in benchmarks: ~3× slower than bucket-qualified reads.
Baseline (net10, 2026-05-20)
| Benchmark |
Mean |
ReadFromBucketCheckpoint(CommitsPerBucket=1000, ExtraBuckets=3) |
22.142 ms |
ReadFromAllBucketsCheckpoint(CommitsPerBucket=1000, ExtraBuckets=3) |
67.011 ms |
Ratio: all-buckets is ~3× slower than bucket-qualified.
Proposed investigation
Reference
See docs/Performance-Investigation.md → Finding #3 for full context.
Summary
The all-buckets checkpoint scan excludes the recycle bin via
BucketId != :rb. Negative inequality filters are less index-friendly than positive inclusion filters and may bypass the primary checkpoint index, causing a measurable gap vs bucket-qualified reads.Why this matters
!=) are less index-friendly than positive inclusion.Baseline (net10, 2026-05-20)
ReadFromBucketCheckpoint(CommitsPerBucket=1000, ExtraBuckets=3)ReadFromAllBucketsCheckpoint(CommitsPerBucket=1000, ExtraBuckets=3)Ratio: all-buckets is ~3× slower than bucket-qualified.
Proposed investigation
explain()on both queries and compare index usage.Reference
See
docs/Performance-Investigation.md→ Finding #3 for full context.