Running many benchmarks on fast storage (FusionIO, SSDs) and multi-cores CPUs system I constantly face two contention problems.
So I suspect it's going to be next biggest issues to make InnoDB scaling on high-end system.
This is also reason why in benchmarks I posted previously CPU usage is only about 50%, leaving other 50% in idle state.
First problem is index->lock mutex.
InnoDB uses single mutex per index, so when you run mixed read /
write queries, InnoDB locks index for write operation and thus
keeps all selects waiting when update/insert is done. This is
implemented in this way because write operation may cause B-Tree
page split, and InnoDB needs to move records between pages to
finish operation. It is getting even worse when for write you
need to perform some additional IO to bring page into
buffer_pool.
What could be done there internally: there is B-Tree lock free or only page-level lock …
[Read more]