Skip to content

Benchmark deletes and disk space after them - #43

Merged
venkat1701 merged 4 commits into
mainfrom
feat/bench-deletes
Oct 4, 2026
Merged

venkat1701 merged 4 commits into
mainfrom
feat/bench-deletes

Conversation

@venkat1701

Copy link
Copy Markdown
Collaborator

Closes #34

Adds a churn phase after the existing sequence:

  1. disk is now recorded while the store is closed for a reopen, so it still means the loaded store after a clean shutdown.
  2. churn.delete: delete 20% of the hyperedges, 1,000 per transaction.
  3. churn.remove: remove one member from each of 20,000 other hyperedges with at least three members.
  4. read.incidence.churned: incidence sets again. The checksum has to agree, which shows both engines applied the same deletes.
  5. disk.churned: bytes on disk after a clean shutdown.

The churn set is drawn from the same seed after everything else, so the existing dataset and probes don't change. HyperGraphDB links are immutable, so member removal replaces the link with a new HGPlainLink that lacks the member.

Smoke run at scale 1, async, one run each. Checksums agree after churn (645,087 for both).

HStore HyperGraphDB
churn.delete 7,063 ops/s 2,361 ops/s
churn.remove 3,983 ops/s 6,475 ops/s
disk before churn 173.3 MiB 272.2 MiB
disk.churned 406.0 MiB 233.1 MiB

So HStore deletes quickly but doesn't give the space back. Its files more than double after deleting a fifth of the edges, while JE's cleaner shrinks them. My guess is the 64 retained history generations, plus compaction only running after 256 MiB of writes and moving one segment per pass, but I haven't confirmed it. I'll open a separate issue.

Note that disk before churn is also higher than in the published tables, because the mixed workload from #41 writes about 70 MB first. The published numbers need a full rerun anyway.

20% of the hyperedges to delete and 20,000 others that each lose one
member. It is drawn after everything else, so the existing dataset and
probes don't change.
HyperGraphDB links are immutable, so removing a member replaces the link
with one that lacks it. reopen also takes a callback that runs while the
store is closed.
The run records disk while closed before the churn, deletes and removes,
reads incidence sets again and records disk.churned at the end.
@venkat1701
venkat1701 merged commit 496e97b into main Oct 4, 2026
@venkat1701
venkat1701 deleted the feat/bench-deletes branch October 6, 2026 00:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

No benchmark for deletes

1 participant