May 23, 2013

Lost innodb tables, xfs and binary grep

Before I start a story about the data recovery case I worked on yesterday, here’s a quick tip – having a database backup does not mean you can restore from it. Always verify your backup can be used to restore the database! If not automatically, do this manually, at least once a month. No, seriously [...]

Why message queues and offline processing are so important

If you read Percona’s whitepaper on Goal-Driven Performance Optimization, you will notice that we define performance using the combination of three separate terms. You really want to read the paper, but let me summarize it here: Response Time – This is the time required to complete a desired task. Throughput – Throughput is measured in [...]

Scaling: Consider both Size and Load

So lets imagine you have the server handling 100.000 user accounts. You can see the CPU,IO and Network usage is below 10% of capacity – does it mean you can count on server being able to handle 1.000.000 of accounts ? Not really, and there are few reasons why, I’ll name most important of them: [...]

Purge Thread Spiral of Death

I just wrote a large post on reasons for innodb main tablespace excessive growth and I thought it would make sense to explain briefly of why it is so frequently you have purge not being the problem at all and when out of no where you can see purge thread being unable to keep up [...]

Performance improvements in Percona 5.0.83 and XtraDB

There was small delay in our releases, part of this time we worked on features I mentioned before: – Moving InnoDB tables between servers – Improve InnoDB recovery time and rest time we played with performance trying to align XtraDB performance with MySQL 5.4 ® and also port all performance fixes to 5.0 tree. So [...]

Converting Character Sets

The web is going the way of utf8.  Drizzle has chosen it as the default character set, most back-ends to websites use it to store text data, and those who are still using latin1 have begun to migrate their databases to utf8.  Googling for “mysql convert charset to utf8″ results in a plethora of sites, [...]

How Percona Develops Open-Source Software

Percona has been building and contributing to open-source software since the company was founded, and individually we’ve been doing the same thing for many years.  We think it’s a huge value for our customers and the community. We’re involved in a dozen or so open-source projects, but our three core efforts at the moment are [...]

7 Reasons why MySQL Quality will never be the same

I had a call with Monty the other day and I told him why I think MySQL Server Quality will never be the same again. I’ve been thinking a bit more about it and here is the extended list. In particular I think MySQL Server will never be able to reach its original quality guidelines [...]

Four ways to optimize paginated displays

A paginated display is one of the top optimization scenarios we see in the real world. Search results pages, leaderboards, and most-popular lists are good examples. You know the design pattern: display 20 results in some most-relevant order. Show a “next” and “previous” link. And usually, show how many items are in the whole list [...]

The MySQL optimizer, the OS cache, and sequential versus random I/O

In my post on estimating query completion time, I wrote about how I measured the performance on a join between a few tables in a typical star schema data warehousing scenario. In short, a query that could take several days to run with one join order takes an hour with another, and the optimizer chose [...]