Skip to content

Doltlite 0.11.43

Choose a tag to compare

@timsehn timsehn released this 09 Aug 22:46
8fbdda1

DoltLite 0.11.43

Faster SQL, historical queries, and tighter Dolt-compatible semantics.

SQL performance

  • Durable autocommit writes are 10–31% faster in sysbench workloads by reusing the graph-lock handle across transactions.
  • Integer searches compare encoded keys directly; index probes reuse cursor storage.
  • Range and table scans use a shorter same-leaf path with inline cursor checks and value-span decoding.
  • Writes reuse exact seek misses instead of repeating mutation-map hashing and lookup.
  • Large catalogs use indexed schema lookups for faster status and diff operations.

Historical queries

  • Diff and history tables are now available for tables reachable only through another branch, tag, or remote-tracking ref.
  • dolt_history_<table>(ref) selects an explicit ref; the no-argument form and its joins remain scoped to the session branch.
  • Point-in-time and history queries use each historical root's key shape, fixing filtering and rendering across rowid and WITHOUT ROWID schemas.

Version control and remotes

  • Clone creates origin/* tracking refs for every branch.
  • Working sets no longer push or pull: dirty rows stay local and cloned branches start clean.
  • Revert excludes unrelated uncommitted changes from its commit.
  • Rebase continue detects foreign-key, unique, and CHECK violations in every transaction mode.

Reliability

  • One-pass updates and deletes no longer skip pending rows or return stale committed values after deferred writes.
  • Interleaved writes no longer resurrect deleted rows when merged scans resume.
  • Version-control performance ceilings account for measured fsync latency, reducing false failures on slow runners without relaxing healthy-runner limits.

Benchmark / int-keys (100K rows, Linux x64)

File-Backed

Reads

Test SQLite (us) DoltLite (us) Multiplier
oltp_point_select 107,068 56,039 0.52
oltp_range_select 19,237 14,076 0.73
oltp_sum_range 18,179 13,915 0.77
oltp_order_range 3,647 3,168 0.87
oltp_distinct_range 4,731 4,200 0.89
oltp_index_scan 12,576 7,860 0.62
select_random_points 18,612 13,747 0.74
select_random_ranges 11,330 6,879 0.61
covering_index_scan 12,750 7,010 0.55
groupby_scan 33,447 35,828 1.07
index_join 10,216 9,388 0.92
index_join_scan 4,438 4,951 1.12
types_table_scan 1,106,425 1,249,095 1.13
table_scan 1,255,823 1,351,358 1.08
oltp_read_only 222,711 154,078 0.69
Average 0.82

Writes

Test SQLite (us) DoltLite (us) Multiplier
oltp_bulk_insert 194,589 266,825 1.37
oltp_insert 22,230 35,623 1.60
oltp_update_index 76,479 125,502 1.64
oltp_update_non_index 55,682 79,878 1.43
oltp_delete_insert 65,585 96,488 1.47
oltp_write_only 43,346 63,221 1.46
types_delete_insert 39,396 52,546 1.33
oltp_read_write 85,549 121,613 1.42
Average 1.47

100000 rows, median of 5 paired invocations per test; autocommit writes use 9, workload-only timing via host monotonic clock when available.