Single round trip commit on BatchExecute#4739
Merged
demmer merged 1 commit intovitessio:masterfrom Mar 22, 2019
Merged
Conversation
sougou
reviewed
Mar 20, 2019
Contributor
sougou
left a comment
There was a problem hiding this comment.
An alternate approach I was thinking is to add a new txIsolations entry called AUTOCOMMIT, and it will just not issue a begin (and skip commit).
And then you can use a LocalBegin-LocalCommit in that mode, which will end up doing exactly what you want.
Advantage is that it's a minor code change and less duplication. But I'm not sure if it will be construed as too much magic.
12dc9a8 to
f0a3ae9
Compare
sougou
reviewed
Mar 21, 2019
Contributor
sougou
left a comment
There was a problem hiding this comment.
TabletServer has a SetPassthroughDML call. Were you not able to just switch it for this endtoend test?
8b9ad97 to
160c90b
Compare
sougou
approved these changes
Mar 21, 2019
demmer
requested changes
Mar 21, 2019
Member
demmer
left a comment
There was a problem hiding this comment.
changes look good except for a couple small typos we should clean up and some kind of better testing.
160c90b to
c36726e
Compare
* When auto-commit is on, passDML is on and ExecuteBatch is in a transaction, there is no need to explicitly create a transaction. We can forward the DML directly to the database. * This optimization yielded significant more throughput in vttablets. We got around 25-30% improvement. Most of our queries are single point inserts/updates that already use auto commit when coming from vtgates, so this improvement is something that we've been wanting to do for a long time. Signed-off-by: Rafael Chacon <rafael@slack-corp.com>
c36726e to
20b59bb
Compare
demmer
approved these changes
Mar 22, 2019
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
there is no need to explicitly create a transaction. We can forward the DML
directly to the database.
around 25-30% improvement. Most of our queries are single point
inserts/updates that already use auto commit when coming from vtgates, so this
improvement is something that we've been wanting to do for a long time.
Benchmark
Setup
Results
TL;DR
Prior to this change BLACKHOLE ENGINE:
The following parameters where passed to vtbench:
Prior to this change REAL ENGINE:
The following parameters where passed to vtbench:
New Build BLACKHOLE ENGINE:
The following parameters where passed to vtbench:
New Build REAL ENGINE:
The following parameters where passed to vtbench: