mirror of
https://github.com/MariaDB/server.git
synced 2025-08-08 11:22:35 +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:
@@ -0,0 +1,85 @@
|
||||
include/rpl_init.inc [topology=1->2]
|
||||
ALTER TABLE mysql.gtid_slave_pos ENGINE=InnoDB;
|
||||
CREATE TABLE t1 (a int PRIMARY KEY, b INT) ENGINE=InnoDB;
|
||||
CREATE TABLE t2 (a int PRIMARY KEY, b INT) ENGINE=InnoDB;
|
||||
INSERT INTO t1 VALUES (1,0), (2,0), (3,0);
|
||||
INSERT INTO t2 VALUES (1,0), (2,0);
|
||||
SET @old_isolation= @@GLOBAL.tx_isolation;
|
||||
SET @old_parallel_threads=@@GLOBAL.slave_parallel_threads;
|
||||
include/stop_slave.inc
|
||||
SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;
|
||||
SET GLOBAL slave_parallel_threads=10;
|
||||
CHANGE MASTER TO master_use_gtid=slave_pos;
|
||||
SET @old_parallel_mode=@@GLOBAL.slave_parallel_mode;
|
||||
SET GLOBAL slave_parallel_mode='domain,transactional,waiting';
|
||||
*** Test that we replicate correctly when using READ COMMITTED and --log-slave-updates=0 on the slave ***
|
||||
INSERT INTO t1 SELECT 4, COUNT(*) FROM t2;
|
||||
INSERT INTO t2 SELECT 4, COUNT(*) FROM t1;
|
||||
INSERT INTO t1 SELECT 5, COUNT(*) FROM t2;
|
||||
INSERT INTO t2 SELECT 5, COUNT(*) FROM t1;
|
||||
INSERT INTO t2 SELECT 6, COUNT(*) FROM t1;
|
||||
INSERT INTO t1 SELECT 6, COUNT(*) FROM t2;
|
||||
INSERT INTO t1 SELECT 7, COUNT(*) FROM t2;
|
||||
INSERT INTO t2 SELECT 7, COUNT(*) FROM t1;
|
||||
INSERT INTO t2 SELECT 8, COUNT(*) FROM t1;
|
||||
INSERT INTO t1 SELECT 8, COUNT(*) FROM t2;
|
||||
INSERT INTO t2 SELECT 9, COUNT(*) FROM t1;
|
||||
INSERT INTO t1 SELECT 9, COUNT(*) FROM t2;
|
||||
INSERT INTO t1 SELECT 10, COUNT(*) FROM t2;
|
||||
INSERT INTO t2 SELECT 10, COUNT(*) FROM t1;
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a b
|
||||
1 0
|
||||
2 0
|
||||
3 0
|
||||
4 2
|
||||
5 3
|
||||
6 5
|
||||
7 5
|
||||
8 7
|
||||
9 8
|
||||
10 8
|
||||
SELECT * FROM t2 ORDER BY a;
|
||||
a b
|
||||
1 0
|
||||
2 0
|
||||
4 4
|
||||
5 5
|
||||
6 5
|
||||
7 7
|
||||
8 7
|
||||
9 8
|
||||
10 10
|
||||
include/save_master_gtid.inc
|
||||
include/start_slave.inc
|
||||
include/sync_with_master_gtid.inc
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a b
|
||||
1 0
|
||||
2 0
|
||||
3 0
|
||||
4 2
|
||||
5 3
|
||||
6 5
|
||||
7 5
|
||||
8 7
|
||||
9 8
|
||||
10 8
|
||||
SELECT * FROM t2 ORDER BY a;
|
||||
a b
|
||||
1 0
|
||||
2 0
|
||||
4 4
|
||||
5 5
|
||||
6 5
|
||||
7 7
|
||||
8 7
|
||||
9 8
|
||||
10 10
|
||||
include/stop_slave.inc
|
||||
SET GLOBAL tx_isolation= @old_isolation;
|
||||
SET GLOBAL slave_parallel_mode=@old_parallel_mode;
|
||||
SET GLOBAL slave_parallel_threads=@old_parallel_threads;
|
||||
include/start_slave.inc
|
||||
DROP TABLE t1, t2;
|
||||
include/rpl_end.inc
|
Reference in New Issue
Block a user