While we do have many blog posts on replication on our blog, such as on replication being single-threaded, on semi-synchronous replication or on estimating replication capacity, I don’t think we have one that covers the very basics of how MySQL replication really works on the high level. Or it’s been so long ago I can’t [...]
Time for Zero Administration effort at MySQL ?
Preparing Optimizing MySQL Configuration talk for Percona Live in Washington,DC I noticed how many Variables did MySQL get over years – it is pushing 400 these days even if we do not count variables/options which do not have matching SHOW VARIABLES value, and settings done by changing tables rather than command line options (like much [...]
MySQL Life Cycle. Your Feedback is needed.
When I started with MySQL 3.22 I would start running MySQL from early beta (if not alpha) and update MySQL the same date as release would hit the web. Since that time I matured and so did MySQL ecosystem. MySQL is powering a lot more demanding and business critical applications now than 12 years ago [...]
How to debug long-running transactions in MySQL
Among the many things that can cause a “server stall” is a long-running transaction. If a transaction remains open for a very long time without committing, and has modified data, then other transactions could block and fail with a lock wait timeout. The problem is, it can be very difficult to find the offending code [...]
UDF -vs- MySQL Stored Function
Few days ago I was working on a case where we needed to modify a lot of data before pushing it to sphinx – MySQL did not have a function to do the thing so I thought I’ll write MySQL Stored Function and we’ll be good to go. It worked! But not so well really [...]
Checking for a live database connection considered harmful
It is very common for me to look at a customer’s database and notice a lot of overhead from checking whether a database connection is active before sending a query to it. This comes from the following design pattern, written in pseudo-code:
1 2 3 4 5 6 | function query_database(connection, sql) if !connection.is_alive() and !connection.reconnect() then throw exception end return connection.execute(sql) end |
Many of the popular development platforms do something similar to this. Two [...]
Finding your MySQL High-Availability solution – The definitions
As my first contribution to the MySQL Performance Blog, I joined Percona at the beginning September, I chose to cover the various high-availability (HA) options available for MySQL. I have done dozen of MySQL HA related engagements while working for Sun/MySQL over the last couple of years using Heartbeat, DRBD and NDB cluster and I’ll [...]
KISS KISS KISS
When I visit customers quite often they tell me about number of creative techniques they heard on the conferences, read on the blogs, forums and Internet articles and they ask me if they should use them. My advice is frequently – do not. It is fun to be creative but creative solutions also means unproven [...]
Drilling down to the source of the problem
I had an interesting tuning case few days ago. The system serving high traffic using Innodb tables would be stalling every so often causing even very simple queries both reads and writes taking long time to complete, with progress almost paused (dropping from thousands to tens of queries per second). On the surface the problem [...]
Report from OSCON 2008
So I’m back from OSCON 2008. As usually it is fun conference to attend. Though I could only come for couple of days (Wed/Thu) as things are too busy here. Same as previous year I would note the conference is not as much backend and high performance focused as MySQL Conference or even Velocity, though [...]

