Book review: Optimizing Oracle Peformance
Wed, 06 Jan 2010 17:52:44 +0000
Optimizing Oracle Performance by Cary Millsap and Jeff Holt uses Oracle to make its points, but these points apply also to MySQL. The primary lesson I took away from this book is: all else aside, optimize/fix the user-action that provides the most economic benefit to the company; do this by [...]
Debugging and ripple effects
Wed, 18 Nov 2009 22:58:01 +0000
Like I said earlier, every tiny change that the test suite reveals after code changes is significant. I caught a very subtle “bug” today in recent changes to mk-query-digest (a.k.a. mqd). If you like to read about subtle bugs, read on.
An mqd test on sample file slow023.txt began to differ after some pretty [...]
Setting the MySQL Sandbox prompt
Sun, 15 Nov 2009 20:49:50 +0000
This is far from deeply technical but little things that should be simple but aren’t annoy me. I found that MySQL Sandbox --prompt_prefix and --prompt_body don’t “just work.” I wanted the prompt to be mysql \v> . So I tried:
make_sandbox_from_source /mysql/src/mysql-4.0.30 single --prompt_body=' \v> '
sh: -c: line 0: syntax error near unexpected [...]
Zero is a big number
Fri, 30 Oct 2009 15:20:30 +0000
I made changes to mk-query-digest yesterday that I didn’t expect to cause any adverse affects. On the contrary, several tests began to fail because a single new but harmless line began to appear in the expected output: “Databases 0″. Perhaps I’m preaching to the choir, as you are all fantastic, thorough and flawless [...]
MySQL features timeline
Tue, 27 Oct 2009 00:28:47 +0000
I’ve begun a MySQL features timeline which is a quick reference showing as of what version MySQL features were added, changed or removed. The manual tells us this, of course, but I wanted a quicker reference. The list is far from complete as there’s a huge number of features to cover. I’ll [...]
mysqlreport - Make easy-to-read MySQL status reports.
mysqlsla - Simple, lightweight MySQL log parsing.
mysqlidxchx - Checks tables for unused indexes.
mysqlsniffer - MySQL protocol sniffer.
Maatkit is a collection of 20+ scripts originally created by Baron Schwartz. These scripts include mk-table-sync, mk-query-digest, mk-archiver, mk-heart, etc. I am the full-time developer and maintainer for all the scripts. Baron and myself are employed by Percona which sponsors most Maatkit development. Learn more at the official Maatkit website.
These scripts are created/maintained by various people/projects. I may or may not have any association with them, but I think they're interesting and important to be aware of.
innotop - A 'top' clone for MySQL.
innodb-tools - Data Recovery Toolkit for InnoDB.
MMM - Monitoring/failover and management of MySQL master-master replication configurations
kontrollkit - A collection of scripts to simplify daily MySQL DBA responsibilities.
I write more code than docs now. I wrote these docs several years ago when I focused more on query optimization.
Indexing Basic MySQL Queries
Table Design and MySQL Index Details
MySQL ORDER BY With LIMIT and ANALYZE
How To Index For MySQL Joins
How To Look At MySQL Joins and More ORDER BY With LIMIT
Non-technical Guide to Isolating Slow MySQL Queries
COM_QUIT and Questions
DNS Details
Select and Sort Status Variables
JOIN Rows Produced vs. Rows Read
Microsecond Support for MySQL Slow Logs