zheap is a way to keep table bloat under control by implementing a new PostgreSQL storage engine capable of running
UPDATE-intense workloads more efficiently. The project was originally started by EnterpriseDB.
To make zheap ready for production, we are proud to announce that our partners at Heroic Labs have committed to fund the development of zheap and release all code to the community. CYBERTEC has decided to double the funding amount, and to put up additional expertise and manpower to move zheap forward.
Table bloat describes the phenomenon of tables and / or indices growing in size, even if the amount of data stored in the database stays constant. If one wants to support transactions it is necessary not to overwrite data in case it is rolled back.
PostgreSQL copies rows on
UPDATE and stores them in the same table. Stale rows are periodically garbage-collected by an automatic process called VACUUM. Problems start to crop up in
UPDATE-heavy workloads, as VACUUM might not always be able to keep up.
CYBERTEC has started a series of blog posts that go into the design-goals of zheap.
There are a number of active branches that will be merged together once they reach maturity.
- 12-10-2020: Most regression tests are passing, but write-speeds are still low.
Managed through GitHub Wiki.
Will be conducted at a later date, as no attempts at performance tuning have been made yet.