Merged PRs
dolt
- 5122: go/store/{blobstore,nbs}: Refactor
Blobstore
interface to work in multi-db mode
Currently innbs/store.go
NewBSStore()
initializes ablobstoreManifest
with a static name"manifest"
. ThemanifestManager
uses this name as a key to cache memory copies ofmanifestContents
. In multi-db mode, this causes disparatemanifestContents
to clobber each other. - 5119: go/libraries/doltcore/remotesrv: Reducing logging verbosity.
Over time some trace logging snuck into remotesrv. At the same time, the logs were not as useful as they could have been and did not make use of log levels. Clean things up a bit to log more information about the amount of work done in some of the requests without being overly verbose. - 5116: go/libraries/doltcore/remotestorage: chunk_store: Fix semantics of Rebase and Root. Root stays fixed until a Rebase call.
When remotestorage.DoltChunkStore was originally written, it forwarded all ChunkStore calls to the remotesapi. In reality, a client should expect a snapshot of the database on open, and the root should only change when Rebase() or Commit() is called. This fixes up that initial flaw. Rebase() becomes a refresh of the Root from the gRPC service, and Root() itself is just a read of the cached root hash.
This reduces unnecessary traffic to the remotestorage service and improves performance of things like sql-server read replicas. - 5105: add --schema-only flag for
dolt dump
--schema-only is used for dump table schemas with no data into sql file.
go-mysql-server
- 1524: Fix empty cachedResult/existIter issues
MAX_1_ROW no longer uses a CachedResult, and eagerly loads its child on the first call RowIter(). Three things can happen:- the child returns one row, which we cache in the node state
- the child returns zero rows, which we note with a flag in the node state
- the child returns more than one row, and we error
RowIter returns the result row or anemptyIter
if no child rows were returned. TheemptyIter
sentinal is important for antiJoin correctness and join short-circuit performance.
Original error from system table benchmarks:
error running query {connectTime=2023-01-07T01:12:10Z, connectionDb=sbtest, error=attempted to call RowIter() on a disposed Node: *plan.CachedResults, query=select * from dolt_commit_ancestors where commit_hash = (select commit_hash from dolt_log limit 1 offset 599)}
- 1523: Change coster for non-stats tables
dolt side #5112 - 1522: Fixed ENUM issue when using INSERT INTO ... SELECT
- 1521: implementing more st_... functions
implements: - 1520: implementing st_distance
MySQL docs: https://dev.mysql.com/doc/refman/8.0/en/spatial-relation-functions-object-shapes.html#function_st-distance
Closed Issues
- 5094: support
dolt dump --schema-only
Latency
Read Tests | MySQL | Dolt | Multiple |
---|---|---|---|
covering_index_scan | 2.03 | 2.91 | 1.4 |
groupby_scan | 12.98 | 17.95 | 1.4 |
index_join | 1.25 | 5.0 | 4.0 |
index_join_scan | 1.21 | 4.18 | 3.5 |
index_scan | 31.94 | 59.99 | 1.9 |
oltp_point_select | 0.16 | 0.53 | 3.3 |
oltp_read_only | 3.07 | 9.22 | 3.0 |
select_random_points | 0.32 | 0.83 | 2.6 |
select_random_ranges | 0.36 | 1.21 | 3.4 |
table_scan | 32.53 | 66.84 | 2.1 |
types_table_scan | 73.13 | 200.47 | 2.7 |
reads_mean_multiplier | 2.7 |
Write Tests | MySQL | Dolt | Multiple |
---|---|---|---|
bulk_insert | 0.001 | 0.001 | 1.0 |
oltp_delete_insert | 2.97 | 11.04 | 3.7 |
oltp_insert | 1.47 | 3.07 | 2.1 |
oltp_read_write | 5.37 | 18.28 | 3.4 |
oltp_update_index | 1.44 | 5.0 | 3.5 |
oltp_update_non_index | 1.44 | 5.37 | 3.7 |
oltp_write_only | 2.26 | 8.74 | 3.9 |
types_delete_insert | 3.02 | 11.45 | 3.8 |
writes_mean_multiplier | 3.1 |
Overall Mean Multiple | 2.9 |
---|