by dtucny » Tue Mar 19, 2013 6:51 pm
In 2010 I migrated from MyISAM to InnoDB for most of the heavily used tables on a system I was managing.
The reason for doing this was the fact that we were running into performance problems using MyISAM as the database had grown over time and the number of agents had increased.
Agents and managers were more and more reporting issues such as slowness in the web interface, that calls were taking longer to be connected to them, predictive dialling getting worse connect rates over time and that there were some strange issues with logs and leads not always getting updates.
The issues we were experiencing almost entirely boiled down to table locks, in most cases on queries that with InnoDB would only require a row lock, allowing multiple updates to happen in parallel.
Switching to InnoDB on it's own was simple, just switch the engine in MySQL, however, testing highlighted some issues, these were mostly with queries not using keys. These issues were handled in two ways, 1) adding additional keys on tables where needed and 2) rewriting queries in VICIdial to better use keys, something that was much more important for updates on InnoDB where there is really something to be gained.
When this went live all the scaling issues we'd had were gone. 2 years later, everything on the database was still running smoothly, even if the company wasn't.
In that 2 years there were 0 deadlocks, all identified causes of deadlocks had been resolved during testing.
The only noticed downside to using InnoDB that we experienced was that the Lists screen was slower to load due to getting a count of leads in all lists being slower.
So, in summary, it is possible to use InnoDB. My experience is that is can give some very useful improvements, however, there is a decent chunk of work needed in adjusting queries in VICIdial to get the most benefit from it and avoid potential issues, but, that was worth it for us.
I'll be looking at this again soon, specifically from a Percona angle and will feed back my findings.