We have seen a few instances where upgrades of MySQL 5.1 to 5.5 have resulted in poor performance when using default values. After investigation it would appear that the main culprit appears to be the innodb_thread_concurrency setting.
In MySQL 5.1 the default was 8, while in MySQL 5.5, the default was changed to 0 (unlimited).
So what does innodb_thread_concurrency do and why would it cause performance issues?
The value given to innodb_thread_concurrency sets the number of simultaneous threads the InnoDB engine will create. If there are more jobs waiting to be processed than there are available thread slots, these jobs will be made to wait until a thread slot becomes free. So on the face of it, making this unlimited sounds like a good idea - so you won't have any jobs waiting on thread slots.
In an ideal world, unlimited is good. In the real world, unlimited doesn't exist. CPUs only have …
[Read more]