Previewing Dolt 2.0
Two years ago in May, we announced Dolt 1.0. We haven't stopped improving the world's first and only version controlled SQL database. We're approaching Dolt 2.0. What will be in Dolt 2.0? How can you help us launch Dolt 2.0 more quickly? This article will explain.
What Did Dolt 1.0 Mean?
Dolt 1.0 meant four things:
- Forward Storage Compatibility
- Production Performance
- MySQL Compatibility
- Stable Version Control Interface
Dolt 2.0 maintains the promises of Dolt 1.0. Dolt 2.0 improves on the performance and correctness metrics established in Dolt 1.0.
What Does Dolt 2.0 Mean?
Dolt 2.0 also means four things:
- Automated Garbage Collection on by Default
- Archive Compression on by Default
- Performance Parity with MySQL on
sysbench
- Beta Vector Support
Unlike Dolt 1.0, Dolt 2.0 will be fully backwards compatible with all Dolt 1.0 versions. No storage migration using dolt migrate
is required. Let's dive into the details of each of these points.
Garbage Collection
Dolt makes a lot of disk garbage, especially during import. Dolt is copy-on-write so all intermediate committed transaction state is preserved to disk. Any intermediate state that is not in a Dolt commit is garbage and can be collected.
Dolt already must preserve all history in the commit graph on disk. Adding extra garbage can eat through your disk very quickly.
Dolt has long supported garbage collection as an offline process using dolt gc
. In January 2023, we announced online garbage collection using call dolt_gc()
. However, this method of garbage collection was intrusive, breaking all server connections as the final step. In January of 2025, we announced session aware garbage collection, which is non-intrusive to the user, along with a configuration flag to enable automated garbage collection.
For Dolt 2.0, we will have tested Dolt's automatic garbage collection thoroughly enough to enable it by default for all running Dolt servers.
Archives
Following on the disk space theme, we also have a new on disk format we call archives that can reduce Dolt's storage footprint by an additional 30-50%. Archives use dictionary compression to de-duplicate storage in the deepest layers of Dolt, saving even more disk space.
You can manually convert your garbage collected database to archive format using the dolt archive
command. Or, you can enable archive generation as part of automated garbage collection.
Generating archives via automated garbage collection will be the default setting for all running Dolt servers in Dolt 2.0. Dolt 2.0 is going to be much friendlier to your disk by default.
sysbench
Parity with MySQL
We've long used the industry standard sysbench
to measure and benchmark the latency of simple SQL queries in Dolt. We started at about 10X slower on reads and 20X slower on writes than MySQL. We've worked tirelessly to improve Dolt's performance and we are currently 10% faster than MySQL on writes and 30% slower on reads.
Practically, there is no noticeable difference in query latency between MySQL and Dolt for simple queries. With Dolt 2.0, we will match MySQL latency on sysbench
, removing the "practically" from the previous sentence.
Beta Vector Support
Vector index support is the hot new thing in databases. Dolt is not being left behind. We announced vector index support in January 2025. Vector support in Dolt is currently Alpha. We have a much bigger challenge than traditional databases with vector indexes because our vector indexes must be version controlled. We've done the hard computer science to achieve this.
However, since we released vector support both MariaDB and MySQL have implemented a vector
type instead of a json
type to store vectors more performantly. We will match that new standard and generally improve Dolt so that it uses vector indexes for more queries as part of Dolt 2.0. These improvements will move Dolt's vector support to Beta.
How You Can Help With 2.0
Now that I have you excited for Dolt 2.0, I have an ask to help us get to 2.0 more quickly. Please turn on automated garbage collection and archives by adding the following to your config.yaml
:
- # behavior:
+ behavior:
# read_only: false
# autocommit: true
# disable_client_multi_statements: false
# dolt_transaction_commit: false
# event_scheduler: "OFF"
- # auto_gc_behavior:
- # enable: false
- # archive_level: 0
+ auto_gc_behavior:
+ enable: true
+ archive_level: 1
If you hit any issues, please let us know on GitHub or Discord.
Conclusion
Dolt 2.0 is coming late Q3 or early Q4. The long poll is probably performance improvements. Please help by enabling automated garbage collection and archives on your Dolt server. Questions? Stop by our Discord and just ask.