MTS replication only creates a single worker if start with SQL_AFTER_GTIDS?

We were trying some performance experiments by stopping the SQL replication thread to build up a backlog. We wanted to compare two different configuration on two servers replicating from the same leader.
We chose a time to get the two servers in sync (same executed_gtid_set) .
We waited until 3M GTIDs had been retrieved from the leader by both machines and then started the slave the slave thread.
“start slave sql_thread until sql_after_gtids = ”
Performance on the MTS server was abysmal. Eventually we looked and found there to only be a single MTS worker thread in the performance schema table.
Stopping the SQL thread and restarting it without any restrictions and the quantity of worker threads grew to the max set by the global parameter.

Is this to be expected? I can understand making sure that the workers stop, but wouldn’t this fall on the coordinator? The documentation implies that all slave threads would stop.
“With SQL_AFTER_GTIDS, the replication threads stop…”
I guess 1 is all of the slave threads and would make this an accurate statement.

Just trying to make sense of it all.

thanks

1 Like