mirror of
https://github.com/dolthub/dolt.git
synced 2025-12-16 19:36:23 -06:00
-
released this
2025-01-17 18:02:26 -06:00 | 3187 commits to main since this releaseMerged PRs
dolt
- 8770: Speed up fetch when there are many tags which haven't changed
A user remarked thatdolt pulltook 2 hours to pull changes. This was the result of wasting time for every tag which had not changed. This change alters the tag iteration code to defers the loading of metadata until it's actually required. Testing against user takes less that 1min now. - 8753: make autoincrement tracker load async
- 8752: go/store/{nbs,types}: GC: Move the reference walk from types to nbs.
Make the ChunkStore itself responsible for the reference walk, being given handles for walking references and excluding chunks as part of the GC process. This is an incremental step towards adding dependencies on read chunks during the GC process. The ChunkStore can better distinguish whether the read is part of the GC process itself or whether it came from the application layer. It also allows better management of cache impact and the potential for better memory usage.
This transformation gets rid of parallel reference walking and some manual batching which was present in the ValueStore implementation of reference walking. The parallel reference walking was necessary for reasonable performance in format LD_1, but it's actually not necessary in DOLT. For some use cases it's a slight win, but the simplification involved in getting rid of it is worth it for now. - 8747: go/libraries/doltcore/sqle/dprocedures: dolt_gc.go: Retry canceling running queries when waiting for safepoint establishment.
This allowscall dolt_gc()to more quickly and realibly establish a safepoint if the call to safepointF() races with a new query beginning and being registered for the connection in the process list.
go-mysql-server
- 2820: Don't close ctx prematurely for single row results
User reported cancelled context error which is caused by prematurely closing the iterator when the ctx is still needed. - 2819: Don't force a table rewrite when appending extra values to the end of an enum.
Adding extra strings to the end of an enum type doesn't change the values for any of the existing strings. A table rewrite isn't necessary in this case.
If a specific table implementation does need to be rewritten when an enum type changes this way, they can still implementShouldRewriteTablein order to force a rewrite anyway. - 2817: Use vector index when the
SELECTcause has a projection.
Due to some overly strict pattern matching in the vector index selection, we weren't always using the index when there was a projection involved: we were only applying the index in the presence of aTopNnode, but we also weren't generatingTopNnodes in the case we had aLimit -> Project -> Sortnode structure.
I was hoping that https://github.com/dolthub/go-mysql-server/pull/2813 would fix this, and I suspect there's improvements to GMS that would make this unnecessary. But for now, we should allow the pattern matching inreplaceIdxOrderByDistanceto apply a vector index lookup in this case.
Closed Issues
- 8769:
last_insert_idgives 0 when 0 is explicitly specified for anauto_incrementprimary key in an insertion
Performance
Read Tests MySQL Dolt Multiple covering_index_scan 1.89 0.65 0.34 groupby_scan 13.22 17.63 1.33 index_join 1.47 2.48 1.69 index_join_scan 1.42 1.44 1.01 index_scan 34.95 30.81 0.88 oltp_point_select 0.18 0.27 1.5 oltp_read_only 3.49 5.37 1.54 select_random_points 0.34 0.61 1.79 select_random_ranges 0.37 0.63 1.7 table_scan 34.95 32.53 0.93 types_table_scan 77.19 116.8 1.51 reads_mean_multiplier 1.29 Write Tests MySQL Dolt Multiple oltp_delete_insert 8.74 6.32 0.72 oltp_insert 4.1 3.07 0.75 oltp_read_write 8.9 11.45 1.29 oltp_update_index 4.18 3.13 0.75 oltp_update_non_index 4.18 3.07 0.73 oltp_write_only 5.67 6.32 1.11 types_delete_insert 8.28 6.67 0.81 writes_mean_multiplier 0.88 TPC-C TPS Tests MySQL Dolt Multiple tpcc-scale-factor-1 95.28 39.62 2.4 tpcc_tps_multiplier 2.4 Overall Mean Multiple 1.52 Downloads
- 8770: Speed up fetch when there are many tags which haven't changed