hydradatabase / hydradatabase/columnar
[Bug]: columnar.vacuum() does not release disk space
- Dominant language
- C
- Stars
- 3k
- Forks
- 106
- PR merge metrics
- No merged PRs in 30d
Description
### What's wrong?
We already have metadata tables that show 100% deleted and empty stripe, but the vacuum could not touch it after many times 1 stripe run.
https://github.com/hydradatabase/columnar/blob/d1f7657ee82265b2b9f1c06fda929bb5b942411b/columnar/src/backend/columnar/columnar_metadata.c#L16
Looks like the vacuum is a rewrite-and-compact utility, it is not metadata-driven tombstone reclamation engine.
Can you help add the function that refer to metadata table info to vacuum the stripe with high deleted row first, then, less rowcount strip second?
Thanks a lot
Frank
Contributor guide
No contributing guide indexed for this repository
Research direction
Start at columnar/src/backend/columnar/columnar_metadata.c around line 16 and inspect the metadata tables used by vacuum. Trace the vacuum entry point, then use the reported deleted-row and empty-stripe information to define the reclamation order; done means vacuum releases space from eligible stripes, prioritizing the highest deleted-row ratio and then lower row counts.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c, postgresql
- Domain
- databases
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100