summaryrefslogtreecommitdiff
path: root/sql/rpl_rli.h
diff options
context:
space:
mode:
authorKristian Nielsen <knielsen@knielsen-hq.org>2014-11-13 10:20:48 +0100
committerKristian Nielsen <knielsen@knielsen-hq.org>2014-11-13 10:20:48 +0100
commiteec04fb4f6534ec7e1102ee37062fe8c43e89cda (patch)
tree6ac54c4cc838e1446d4106056052faf621a8574d /sql/rpl_rli.h
parent8a3e2f29bb1a0ec1c0104a8877ce9f9d507cfcf3 (diff)
downloadmariadb-git-eec04fb4f6534ec7e1102ee37062fe8c43e89cda.tar.gz
MDEV-6680: Performance of domain_parallel replication is disappointing
The code that handles free lists of various objects passed to worker threads in parallel replication handles freeing in batches, to avoid taking and releasing LOCK_rpl_thread too often. However, it was possible for freeing to be delayed to the point where one thread could stall the SQL driver thread due to full queue, while other worker threads might be idle. This could significantly degrade possible parallelism and thus performance. Clean up the batch freeing code so that it is more robust and now able to regularly free batches of object, so that normally the queue will not run full unless the SQL driver thread is really far ahead of the worker threads.
Diffstat (limited to 'sql/rpl_rli.h')
-rw-r--r--sql/rpl_rli.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/sql/rpl_rli.h b/sql/rpl_rli.h
index 3a8d87030ad..9885417aa3f 100644
--- a/sql/rpl_rli.h
+++ b/sql/rpl_rli.h
@@ -496,6 +496,7 @@ private:
*/
struct inuse_relaylog {
inuse_relaylog *next;
+ Relay_log_info *rli;
/* Number of events in this relay log queued for worker threads. */
int64 queued_count;
/* Number of events completed by worker threads. */