diff options
author | Kristian Nielsen <knielsen@knielsen-hq.org> | 2014-11-13 10:20:48 +0100 |
---|---|---|
committer | Kristian Nielsen <knielsen@knielsen-hq.org> | 2014-11-13 10:20:48 +0100 |
commit | eec04fb4f6534ec7e1102ee37062fe8c43e89cda (patch) | |
tree | 6ac54c4cc838e1446d4106056052faf621a8574d /sql/rpl_rli.h | |
parent | 8a3e2f29bb1a0ec1c0104a8877ce9f9d507cfcf3 (diff) | |
download | mariadb-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.h | 1 |
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. */ |