Bug #25078 Make the replication thread to ignore innodb_thread_concurrency
| Submitted: | 14 Dec 2006 17:48 | Modified: | 20 Jun 2010 17:29 |
|---|---|---|---|
| Reporter: | Heikki Tuuri | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server: InnoDB storage engine | Severity: | S5 (Performance) |
| Version: | 5.1 | OS: | Any |
| Assigned to: | Vasil Dimov | CPU Architecture: | Any |
[14 Dec 2006 17:48]
Heikki Tuuri
[14 Dec 2006 20:34]
Guilhem Bichot
Note that we also got requests (from customers) for the opposite: an option to "throttle" the slave SQL thread so that it leaves enough resources for the normal client threads on the slave.
[15 Dec 2006 13:44]
Heikki Tuuri
Hmm... this has to wait until the 5.1 engine-configurable my.cnf is implemented and works. We could implement a new option: innodb_replication_priority that could have values 0 ... 10. We could define 10 as the default. At lower priorities, srv conc code could delay the replication thread by (10 - n) milliseconds if there are other queries inside InnoDB. At level 10, the replication thread would always be allowed to enter in the srv conc code, even if there already are >= innodb_thread_concurrency threads inside InnoDB.
[15 Dec 2006 14:45]
Heikki Tuuri
I would propose innodb_replication_delay which would be specified in milliseconds. Some user might want to specify a delay longer than 10 milliseconds, and we do not want to repeat the mistakes made with innodb_thread_concurrency. Marko
[4 Jan 2007 17:11]
Heikki Tuuri
Assigning this feature request to Marko.
[1 Mar 2007 13:23]
Marko Mäkelä
Lars, Guilhem,
the parameter to delay replication threads could be global to all storage engines, but I believe that it would have to be interpreted in each storage engine.
I would implement Mark Callaghan's feature request like this:
Index: handler/ha_innodb.cc
===================================================================
--- handler/ha_innodb.cc (revision 1319)
+++ handler/ha_innodb.cc (working copy)
@@ -464,7 +464,12 @@ innodb_srv_conc_enter_innodb(
/*=========================*/
trx_t* trx) /* in: transaction handle */
{
- if (UNIV_LIKELY(!srv_thread_concurrency)) {
+ if (UNIV_LIKELY(!srv_thread_concurrency
+ || (trx->mysql_thd
+ && ((THD*) trx->mysql_thd)->slave_thread))) {
+ /* Disable the thread throttling if
+ innodb_thread_concurrency=0
+ or this is a replication slave thread. */
return;
}
@@ -481,7 +486,12 @@ innodb_srv_conc_exit_innodb(
/*========================*/
trx_t* trx) /* in: transaction handle */
{
- if (UNIV_LIKELY(!srv_thread_concurrency)) {
+ if (UNIV_LIKELY(!srv_thread_concurrency
+ || (trx->mysql_thd
+ && ((THD*) trx->mysql_thd)->slave_thread))) {
+ /* Disable the thread throttling if
+ innodb_thread_concurrency=0
+ or this is a replication slave thread. */
return;
}
Obviously, this won't work in plugins. I propose an accessor function:
bool thd_is_slave_thread(const THD*).
[12 Apr 2007 15:43]
Heikki Tuuri
Assigning this to Vasil. Some users want the replication thread to have a low priority, but most users want it to have a high priority. We can implement this when the pluggable 5.1 comes out, since we need to add yet another configuration option: innodb_prioritize_replication whose default value is TRUE. Regards, Heikki
[12 Jul 2007 17:29]
Timothy Smith
Queued to 5.1-maint team tree
[19 Jul 2007 15:48]
Bugs System
Pushed into 5.1.21-beta
[30 Jul 2007 19:20]
Paul DuBois
Noted in 5.1.21 changelog. The replication thread on a slave now is always allowed to enter InnoDB even if this would exceed the limit imposed by the innodb_thread_concurrency system variable.
[3 Aug 2007 15:02]
Paul DuBois
Updated changelog entry: The SQL thread on a slave now is always allowed to enter InnoDB even if this would exceed the limit imposed by the innodb_thread_concurrency system variable. In cases of high load on the slave server (when innodb_thread_concurrency is reached), this change helps the slave stay more up to date with the master; in the previous behavior, the SQL thread was competing for resources with all client threads active on the slave server.
[30 Aug 2007 0:51]
Sveta Smirnova
There is bug #30706 about innodb_prioritize_replication feature.
[5 May 2010 15:02]
Bugs System
Pushed into 5.1.47 (revid:joro@sun.com-20100505145753-ivlt4hclbrjy8eye) (version source revid:vasil.dimov@oracle.com-20100331130613-8ja7n0vh36a80457) (merge vers: 5.1.46) (pib:16)
[6 May 2010 2:32]
Paul DuBois
Push resulted from incorporation of InnoDB tree. No changes pertinent to this bug. Re-closing.
[28 May 2010 6:05]
Bugs System
Pushed into mysql-next-mr (revid:alik@sun.com-20100524190136-egaq7e8zgkwb9aqi) (version source revid:vasil.dimov@oracle.com-20100331130613-8ja7n0vh36a80457) (pib:16)
[28 May 2010 6:34]
Bugs System
Pushed into 6.0.14-alpha (revid:alik@sun.com-20100524190941-nuudpx60if25wsvx) (version source revid:vasil.dimov@oracle.com-20100331130613-8ja7n0vh36a80457) (merge vers: 5.1.46) (pib:16)
[28 May 2010 7:01]
Bugs System
Pushed into 5.5.5-m3 (revid:alik@sun.com-20100524185725-c8k5q7v60i5nix3t) (version source revid:vasil.dimov@oracle.com-20100331130613-8ja7n0vh36a80457) (merge vers: 5.1.46) (pib:16)
[30 May 2010 0:02]
Paul DuBois
Push resulted from incorporation of InnoDB tree. No changes pertinent to this bug. Re-closing.
[17 Jun 2010 12:10]
Bugs System
Pushed into 5.1.47-ndb-7.0.16 (revid:martin.skold@mysql.com-20100617114014-bva0dy24yyd67697) (version source revid:vasil.dimov@oracle.com-20100331130613-8ja7n0vh36a80457) (merge vers: 5.1.46) (pib:16)
[17 Jun 2010 12:57]
Bugs System
Pushed into 5.1.47-ndb-6.2.19 (revid:martin.skold@mysql.com-20100617115448-idrbic6gbki37h1c) (version source revid:vasil.dimov@oracle.com-20100331130613-8ja7n0vh36a80457) (merge vers: 5.1.46) (pib:16)
[17 Jun 2010 13:37]
Bugs System
Pushed into 5.1.47-ndb-6.3.35 (revid:martin.skold@mysql.com-20100617114611-61aqbb52j752y116) (version source revid:vasil.dimov@oracle.com-20100331130613-8ja7n0vh36a80457) (merge vers: 5.1.46) (pib:16)
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.049 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.