I always say that the ultimate MySQL tuning script is an expert human. To that end, I generally try to build tools that help a human be more productive with the raw information from MySQL. One of the things we look at during a performance audit is the MySQL status counters. It’s useful to look at a) absolute values and b) several incremental snapshots. I’ve written a small shell script called “mext” that can make this a little easier.
It looks like this:
baron@kanga:~$ mext -- mysqladmin ext -ri1 -c3 Aborted_clients 1 0 0 Aborted_connects 0 0 0 Binlog_cache_disk_use 0 0 0 Binlog_cache_use 0 0 0 Bytes_received 1167 35 35 Bytes_sent 38926 6337 6337 ....
This isn’t an original idea. Ryan Lowe made a Perl version of this first. I used his version for a while, but after working on a few machines that didn’t have the necessary Perl libraries (maybe one of them didn’t even have Perl, I forget) I decided to do it in shell.
There’s an added feature. It’ll do incremental/differential/relative output for you. The mysqladmin that ships with MySQL 5.1 has a bug that stops it from iterating with -r. So the script I wrote can accept a -r option, which can then be left off the arguments to mysqladmin:
baron@kanga:~$ mext -r -- mysqladmin ext -i1 -c3
It’s kind of a generic tool that you could use with other things besides mysqladmin, but it’s also kind of tweaked for that purpose. You can get mext here.