Comments (4)
This seems troubling that deleting data is causing .9MB (at least) of io writes. The size not being reclaimed makes sense, more data being written doesn't seem like it should be the case.
This isn't necessarily true. LevelDB is log-structured, so deleting a key basically appends an additional log entry like:
some_random_key: delete
Every database key is a node hash and thus takes up about 40 byte each. It's also possible that orphan/inner node churn amplifies this.
from iavl.
In my experience you'll need to compact the db after deleting old versions in order to actually reclaim disk space, leveldb
has a CompactRange
function you can call with an empty range to compact the whole db.
from iavl.
This seems troubling that deleting data is causing .9MB (at least) of io writes. The size not being reclaimed makes sense, more data being written doesn't seem like it should be the case. I think something is probably wrong here, either from a theoretic perspective of the IAVL schemes versioning, or just a sub-optimal implementation. I also suspect this same problem is likely a significant contributor to cosmos/cosmos-sdk#2131
from iavl.
this was removed in the last release
from iavl.
Related Issues (20)
- upstream deepsubtree work from celestia
- Proposed new repo API
- Implement a `lazy set` for the migration to the new node key format HOT 2
- Consider dropping error result from ImmutableTree.Iterator
- Consider dropping error result from ImmutableTree.Export
- Drop error result from NewMutableTree/NewMutableTreeWithOpts HOT 1
- Drop error result from Node.hashWithCount HOT 1
- leaf separation or versiondb integration HOT 1
- keyformat: (*KeyFormat).KeyBytes presumes that len(kf.layout) will always be non-empty
- internal/rand: RandStr and (*Rand).Str should have limits to their lengths lest cause memory hogs and if used can caused a Denial-of-Service HOT 1
- Consider changing the type of NodeKey.nonce to uint32 HOT 7
- Missing bounds check in deltaEncode HOT 1
- Memory leak during State Sync HOT 4
- iavl export failed with "version does not exist" HOT 2
- Async Commit HOT 1
- nodeDb.DeleteVersionsFrom can leave mutex locked indefinitely hence a deadlock
- [Epic]: IAVL v2 implementation HOT 1
- Post-order snapshot HOT 4
- Tree diff (IAVL v1 design)
- Historical proofs & changelog replay
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from iavl.