Bug #52289 | performance regression for MyISAM in sysbench OLTP_RW test | ||
---|---|---|---|
Submitted: | 23 Mar 2010 2:04 | Modified: | 15 Jul 2010 19:54 |
Reporter: | Alexey Stroganov | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Locking | Severity: | S2 (Serious) |
Version: | 5.5.3pre/5.5.4pre | OS: | Any |
Assigned to: | Dmitry Lenev | CPU Architecture: | Any |
[23 Mar 2010 2:04]
Alexey Stroganov
[23 Mar 2010 19:42]
Alexey Stroganov
Checked issue on Solaris 10/x64: # # Test: OLTP_RW/MyISAM, throughput TPS # # Solaris/x64: threads 5.5.2 5.5.4-trunk 5.5.4-runtime-exp --------------------------------------------- 128 201 141 123 256 204 124 122
[24 Mar 2010 9:13]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/104158 3002 Dmitry Lenev 2010-03-24 Tentative fix for bug #52289 "performance regression for MyISAM in sysbench OLTP_RW test". Improve concurrency in MDL_lock::find_deadlock() method by trying to reduce time during which MDL_lock::m_rwlock is held. This is done by avoiding unnecessary iterations through lists of granted or waiting tickets if we know that they don't contain tickets conflicting with the one which wait is being analyzed by this method.
[25 Mar 2010 5:07]
Dmitry Lenev
Investigation showed that this regression is mostly caused by thundering herd problem which occurs when MDL_lock::wake_up_waiters() wake-ups all contexts waiting on the lock and not only those which can continue and not cause problem to each other (e.g. several requests for SNRW lock are woken up).
[3 Jun 2010 11:44]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/110095 3037 Konstantin Osipov 2010-06-03 A code review comment for Bug#52289. Encapsulate the deadlock detection functionality into a visitor class, and separate it from the wait-for graph traversal code. Use "Internal iterator" and "Visitor" patterns to achieve the desired separation of responsibilities. Add comments.
[3 Jun 2010 13:23]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/110108 3037 Konstantin Osipov 2010-06-03 A code review comment for Bug#52289. Encapsulate the deadlock detection functionality into a visitor class, and separate it from the wait-for graph traversal code. Use "Internal iterator" and "Visitor" patterns to achieve the desired separation of responsibilities. Add comments.
[3 Jun 2010 13:39]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/110111 3037 Konstantin Osipov 2010-06-03 A code review comment for Bug#52289. Encapsulate the deadlock detection functionality into a visitor class, and separate it from the wait-for graph traversal code. Use "Internal iterator" and "Visitor" patterns to achieve the desired separation of responsibilities. Add comments.
[3 Jun 2010 14:09]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/110119 3037 Konstantin Osipov 2010-06-03 A code review comment for Bug#52289. Encapsulate the deadlock detection functionality into a visitor class, and separate it from the wait-for graph traversal code. Use "Internal iterator" and "Visitor" patterns to achieve the desired separation of responsibilities. Add comments. @ sql/mdl.cc Encapsulate deadlock detection into a class. @ sql/mdl.h Adjust for a rename of a class.
[3 Jun 2010 14:33]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/110125 3038 Konstantin Osipov 2010-06-03 A follow up for the previous patch, titled: A code review comment for Bug#52289. Encapsulate the deadlock detection functionality into a visitor class... Remove a race introduced by omission: initialize iterators under a read lock on the object. @ sql/mdl.cc Initialize iterators under a read lock on the object.
[7 Jun 2010 13:41]
Bugs System
A patch for this bug has been committed. After review, it may be pushed to the relevant source trees for release in the next version. You can access the patch from: http://lists.mysql.com/commits/110356 3042 Dmitry Lenev 2010-06-07 Follow-up for bug#52289 "performance regression for MyISAM in sysbench OLTP_RW test". Fixes compilation warnings about local variable shadowing I_P_List_fast_push_back::last member. Renamed I_P_List_fast_push_back::last member to m_last. Also to keep member naming consistent renamed I_P_List::first member to m_first.
[7 Jun 2010 15:23]
Dmitry Lenev
The following fix for this bug was pushed into mysql-trunk-runtime team tree http://lists.mysql.com/commits/110312.
[22 Jun 2010 13:08]
Bugs System
Pushed into 5.5.5-m3 (revid:alik@sun.com-20100622130139-u05awgya93zvbsop) (version source revid:marko.makela@oracle.com-20100603095032-v5ptkkzt1bhz0m1d) (merge vers: 5.1.48) (pib:16)
[22 Jun 2010 13:10]
Bugs System
Pushed into mysql-next-mr (revid:alik@sun.com-20100622130623-r7yhm89fz9n5t9nb) (version source revid:alik@sun.com-20100622130528-187gd949sa9b6pa6) (pib:16)
[15 Jul 2010 19:54]
Paul DuBois
Noted in 5.5.5 changelog. For a concurrent load of 16 or more connections containing many LOCK TABLES WRITE statements for the same table, server throughput was significantly lower for MySQL 5.5.3 and 5.5.4 than for earlier versions (10%-40% lower depending on concurrency).