[core] Prune manifests by bucket metadata - #9784
jianguotian wants to merge 1 commit into
Conversation
|
Please narrow this PR to manifest bucket pruning and complete that independently first. Manifest sorting, bucket-first layout, forced manifest rewrites, and other independent optimizations should be separate follow-up PRs. For the pruning metadata, I suggest a single nullable
This removes total-bucket-count range enumeration and its combination limits. The tradeoff is deliberately narrower pruning coverage: manifests containing different bucket counts will fall back. Different partitions can retain different counts, so we must not substitute the current table's Let's implement and evaluate this simpler pruning change on its own first, without changing manifest sort behavior in the same PR. More general mixed-count pruning and layout changes can be considered separately with their own performance evidence. |
Purpose
Bucket-key point lookups spanning many partitions can spend most of their time opening manifests whose bucket ranges cannot match. Manifest metadata currently lacks total-bucket bounds, and existing compacted manifests cannot be reorganized under an opt-in bucket-first layout.
This supersedes #9783 with a clean, single-commit branch based on the latest
master.Changes
manifest-sort.bucket-firstfor data evolution tables instead of silently ignoring itLegacy manifests without the new nullable fields fall back to conservative reads. Both new options default to false. Bucket enumeration is bounded and also falls back conservatively.
Performance evidence
On a production-shaped 2.54 TB test branch using the same point-lookup SQL and result set, the combined layout and pruning path reduced opened manifests from 136 to 1 and planning from 22.6 s to 2.0 s. Resulted data files remained 54 and splits remained 25, isolating the change to planning rather than data scanning.
Verification
paimon-coretests: 152 tests, 0 failures, 0 errors, 1 skippedpaimon-coreplus required modules package: BUILD SUCCESS (9 modules)