mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
MDEV-6676: Optimistic parallel replication
Implement a new mode for parallel replication. In this mode, all transactions are optimistically attempted applied in parallel. In case of conflicts, the offending transaction is rolled back and retried later non-parallel. This is an early-release patch to facilitate testing, more changes to user interface / options will be expected. The new mode is not enabled by default.
This commit is contained in:
@ -49,7 +49,29 @@ struct group_commit_orderer {
|
||||
uint64 wait_count;
|
||||
group_commit_orderer *prev_gco;
|
||||
group_commit_orderer *next_gco;
|
||||
bool installed;
|
||||
/*
|
||||
This flag is set when this GCO has been installed into the next_gco pointer
|
||||
of the previous GCO.
|
||||
*/
|
||||
static const uint8 INSTALLED = 0x01;
|
||||
/*
|
||||
This flag is set for a GCO in which we have event groups with multiple
|
||||
different commit_id values from the master. This happens when we
|
||||
optimistically try to execute in parallel transactions not known to be
|
||||
conflict-free.
|
||||
|
||||
When this flag is set, in case of DDL we need to start a new GCO regardless
|
||||
of current commit_id, as DDL is not safe to speculatively apply in parallel
|
||||
with prior event groups.
|
||||
*/
|
||||
static const uint8 MULTI_BATCH = 0x02;
|
||||
/*
|
||||
This flag is set for a GCO that contains DDL. If set, it forces a switch to
|
||||
a new GCO upon seeing a new commit_id, as DDL is not safe to speculatively
|
||||
replicate in parallel with subsequent transactions.
|
||||
*/
|
||||
static const uint8 FORCE_SWITCH = 0x04;
|
||||
uint8 flags;
|
||||
};
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user