There are times where you need to know exactly how much memory the mysqld server (or any other program) is using, where (i.e. for what function) it was allocated, how it got there (a backtrace, please!), and at what point in time the allocation happened. For example; you may have noticed a sharp memory increase [...]
Is there room for more MySQL IO Optimization?
I prefer to run MySQL with innodb_flush_method=O_DIRECT in most cases – it makes sure there is no overhead of double buffering and I can save the limited amount of file system cache I would normally have on database server for those things which need to be cached — system files, binary log, FRM files, MySQL [...]
Percona and the MariaDB Foundation
There have been several reports (1,2,3) describing Percona’s stance regarding the MariaDB Foundation that are not totally accurate so I though it would be worth it to describe where we stand on this and related matters. First, let me say the creation of theMariaDB Foundation is a good thing for the MariaDB Community and I’m [...]
The Optimization That (Often) Isn’t: Index Merge Intersection
Prior to version 5.0, MySQL could only use one index per table in a given query without any exceptions; folks that didn’t understand this limitation would often have tables with lots of single-column indexes on columns which commonly appeared in their WHERE clauses, and they’d wonder why the EXPLAIN plan for a given SELECT would [...]
Percona Live MySQL Conference and Expo 2013 – News from the Committee – Tutorial Selection Complete
As Percona Live London is raging in the UK, I thought it fitting to remind everyone about the next big Percona Live: MySQL Conference and Expo 2013 in Santa Clara, Californa on April 22-25, 2013. You can register NOW for this conference, and the Super Saving Registration deadline ends on December 28th, so be sure to [...]
Full table scan vs full index scan performance
Earlier this week, Cédric blogged about how easy we can get confused between a covering index and a full index scan in the EXPLAIN output. While a covering index (seen with EXPLAIN as Extra: Using index) is a very interesting performance optimization, a full index scan (type: index) is according to the documentation the 2nd [...]
Speaking at Percona Live London 2012: Choosing Hardware for MySQL
Another Percona Live event is coming up, this time in London on the 3rd and 4th of December. I’m sure it is going to be as awesome as it was last year. This year, I will talk about ‘Choosing Hardware For MySQL‘. Of course, the most important hardware components will be covered: CPU, Memory, Network, [...]
Edge-case behavior of INSERT…ODKU
A few weeks back, I was working on a customer issue wherein they were observing database performance that dropped through the floor (to the point of an outage) roughly every 4 weeks or so. Nothing special about the environment, the hardware, or the queries; really, the majority of the database was a single table with [...]
Quality Assurance: Percona Server Development Now Monitored by Automated Sysbench Performance Regression Checks!
Continuous integration of new features and bug fixes is great – but what if a small change in seemingly insignificant code causes a major performance regression in overall server performance? We need to ensure this does not happen. That said, performance regressions can be hard to detect. They may hide for some time (or be [...]
How to find MySQL queries worth optimizing ?
One question I often get is how one can find out queries which should be optimized. By looking at pt-query-digest report it is easy to find slow queries or queries which cause the large portion of the load on the system but how do we know whenever there is any possibility to make this query [...]

