While performance using batch operations was already very fast, we wanted to improve single transaction performance as well. Everyone likes a higher throughput, but the initial requests came from our FinTech community that asked an immutable database that can handle a very large volume of small transactions.
Details of the performance improvements
Performance was the main focus of this immudb release. The way durability guarantees were implemented until now i.e. fsync was called synchronously as the final commit step, resulted in a lot of overhead for each transaction.
A significant improvement in write performance (up to x10 faster compared to previous immudb release v1.3.1) was achieved by grouping transactions in the last step of the commit process. The gains are greatest when there are fewer key-value entries per transaction and multiple writers are simultaneously working.
The cost of the sync operation pays for itself as the number of key-value pairs in each transaction increases, although some noticeable speed can still be achieved (up to x2 compared to previous immudb release v1.3.1).
Read performance was also significantly improved due to the introduction of reusable pools of objects, which reduced allocations needed during query resolution. The gains are quite significant in both single and multi-get operations.
Logs can also be generated in json format for easier ingestion by logging platforms.
It’s quite simple to enable this useful feature, just run immudb with the
logformat flag set to
There’s so much more!
You can read the complete release notes on github https://github.com/codenotary/immudb/releases/tag/v1.3.2 to see the complete changelog and read more about all the great features, fixes, and enhancements in this release. Make sure you check it out.
What are you building?
The feedback from the community has been tremendous and we love to hear what y’all are building. It’s what keeps us going day after day. Join us on Discord and Twitter to follow what we’re doing and let us know what you’re doing.