New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Collect conflicts for MVCC in on_yiled trigger #6209
Comments
Egor2001
pushed a commit
that referenced
this issue
Sep 16, 2021
In a few places in txm code trackers were allocated directly bypassing the corresponding API functions `memtx_tx_track_...()` for the sake of local optimization. However, such design lead to difficulties in optimization of tracker creation routines and this patch makes the trackers creation consistent. Needed for #6209
Egor2001
pushed a commit
that referenced
this issue
Sep 16, 2021
Read trackers must be stored in the story of a corresponding tuple but are used only if the reader is interrupted by another txn. So, if the reading txn doesn't yield, there is no need in read tracker. This patch postpones tracker creations which may possibly need extra bookkeping to the on_yield trigger. Needed for #6209
Egor2001
pushed a commit
that referenced
this issue
Sep 16, 2021
Read trackers must be stored in the story of a corresponding tuple but are used only if the reader is interrupted by another txn. So, if the reading txn doesn't yield, there is no need in read tracker. This patch postpones tracker creations which may possibly need extra bookkeping to the on_yield trigger. Needed for #6209
Egor2001
pushed a commit
that referenced
this issue
Sep 17, 2021
In a few places in txm code trackers were allocated directly bypassing the corresponding API functions `memtx_tx_track_...()` for the sake of local optimization. However, such design lead to difficulties in optimization of tracker creation routines and this patch makes the trackers creation consistent. Needed for #6209
Egor2001
pushed a commit
that referenced
this issue
Sep 17, 2021
Read trackers must be stored in the story of a corresponding tuple but are used only if the reader is interrupted by another txn. So, if the reading txn doesn't yield, there is no need in read tracker. This patch postpones tracker creations which may possibly need extra bookkeping to the on_yield trigger. Needed for #6209
Egor2001
pushed a commit
that referenced
this issue
Sep 20, 2021
Read and gap trackers must be stored in the story of a corresponding tuple but are used only if the reader is interrupted by another txn. So, if the reading txn doesn't yield, there is no need in read tracker. This patch postpones tracker creations which may possibly need extra bookkeeping to the on_yield trigger. Needed for #6209
Egor2001
pushed a commit
that referenced
this issue
Sep 27, 2021
This patch adds ffi-based performance test for mvcc used to compare effectiveness of further optimizations. Needed for #6209
Egor2001
pushed a commit
that referenced
this issue
Sep 27, 2021
In a few places in txm code trackers were allocated directly bypassing the corresponding API functions `memtx_tx_track_...()` for the sake of local optimization. However, such design lead to difficulties in optimization of tracker creation routines and this patch makes the trackers creation consistent. Needed for #6209
Egor2001
pushed a commit
that referenced
this issue
Sep 27, 2021
Read and gap trackers must be stored in the story of a corresponding tuple but are used only if the reader is interrupted by another txn. So, if the reading txn doesn't yield, there is no need in read tracker. This patch postpones tracker creations which may possibly need extra bookkeeping to the on_yield trigger. Needed for #6209
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
As a part of #5172.
Now MVCC transaction manager (if enabled) collects some data for its conflict manager in order to determine which and when transactions must be aborted due to conflict. But there's a widely used case when there are no fiber yields until transaction commits (I mean box.commit call).
My proposition is to delay such data collection to the moment when transaction yields or commits. If it yields - do exactly the same work as now, but if it commits earlier - do a shorter and faster check. Of course it will still require some sort of data collection, but could be a much simpler lists allocated on TX's region allocator.
There are two kind of data that is collected by conflict manager:
There should be a performance test that compares performance of tarantool without MVCC, with MVCC and with MVCC and this new feature.
The text was updated successfully, but these errors were encountered: