Oct 11, 2010 |
MySQL, Percona Events
Vadim and I have just published a new technical white paper. It shows how Percona Server with XtraDB can make large-scale multi-tenant databases easier to build with MySQL. Our experiences working with SaaS and shared-hosting companies influenced the features we included in Percona Server and XtraDB, and I think this is the best explanation of […]
Oct 05, 2010 |
MySQL, Percona Events
We’ve just announced a new support offering for MySQL. There’s a press release here, and product information page here. But what does this new service really mean for you, in practical terms? This is actually important — it will open up a range of new choices for you. I’ll explain two major points that matter […]
Aug 31, 2010 |
MySQL, Percona Software
Ignacio Nin and I (mostly Ignacio) have worked together to create tcprstat[1], a new tool that times TCP requests and prints out statistics on them. The output looks somewhat like vmstat or iostat, but we’ve chosen the statistics carefully so you can compute meaningful things about your TCP traffic. What is this good for? In […]
Jul 31, 2010 |
Insight for DBAs, MySQL
A couple of weeks ago one of my colleagues and I worked on a data corruption case that reminded me that sometimes people make unsafe assumptions without knowing it. This one involved SAN snapshotting that was unsafe. In a nutshell, the client used SAN block-level replication to maintain a standby/failover MySQL system, and there was […]
Jul 16, 2010 |
MySQL, Percona Software
I recently did a quick analysis of the distribution of writes to InnoDB’s log files. On a high-traffic commodity MySQL server running Percona XtraDB for a gaming workload (mostly inserts to the “moves” table), I used strace to gather statistics about how the log file writes are distributed in terms of write size. InnoDB writes […]
Jul 05, 2010 |
Insight for DBAs, MySQL
When examining MySQL configuration, we quite often want to know how various buffer sizes are used. This matters because some buffers (sort_buffer_size for example) are allocated to their full size immediately as soon as they are needed, but others are effectively a “max size” and the corresponding buffers are allocated only as big as needed […]
Jun 15, 2010 |
Insight for Developers, MySQL
MySQL’s SHOW STATUS command has two counters that are often confusing and result in “what does that mean?” questions: Handler_read_rnd Handler_read_rnd_next As I understand it, there is some historical context to the choice of names here, hearkening back to before I was involved with MySQL, way back when it was a wrapper around ISAM tables […]
May 18, 2010 |
Insight for DBAs, MySQL
I’ve been talking and writing a bit lately about the scaling problems I’m seeing on fast servers running lots of queries. As a rough guide, I’m seeing this in servers running 20k queries per second and higher, lots of memory, lots of CPU cores, and most queries are running faster than one millisecond; some in […]
May 05, 2010 |
Insight for Developers, MySQL
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:
|
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 […]
May 04, 2010 |
MySQL, Percona Events
If you were at last month’s MySQL conference, you might have seen a small flyer we were distributing, titled “A brief introduction to Goal-Driven Performance Optimization.” This is a super-compressed technical introduction to one of the methods we use to solve problems as quickly and efficiently as possible. We’ve just posted this on a new […]
Apr 24, 2010 |
Insight for Developers, MySQL
A week or so ago at the MySQL conference, I visited one of the backup vendors in the Expo Hall. I started to chat with them about their MySQL backup product. One of the representatives told me that their backup product uses FLUSH TABLES WITH READ LOCK, which he admitted takes a global lock on […]
Apr 14, 2010 |
MySQL
I’ve heard this question a lot, but never thought to blog about the answer. “Is there a performance difference between putting the JOIN conditions in the ON clause or the WHERE clause in MySQL?” No, there’s no difference. The following queries are algebraically equivalent inside MySQL and will have the same execution plan.
|
SELECT * FROM A, B WHERE A.ID = B.ID; SELECT * FROM A JOIN B ON A.ID = B.ID; SELECT * FROM A JOIN B USING(ID); |
Personally, […]
Mar 15, 2010 |
MySQL, Percona Events
Many Percona employees will be at the 2010 MySQL conference. We’ll be giving a lot of informative technical talks on various topics. Here’s a list: Morgan Tocker, Baron Schwartz: Diagnosing and Fixing MySQL Performance Problems Peter Zaitsev: Scaling Applications with Caching, Sharding and Replication Baron Schwartz: EXPLAIN Demystified Vadim Tkachenko: An Overview of Flash Storage […]
Feb 28, 2010 |
Insight for DBAs, MySQL
I have not caused a fist fight in a while, so it’s time to take off the gloves. I claim that somewhere around of 99% of advice about tuning MySQL’s key cache hit ratio is wrong, even when you hear it from experts. There are two major problems with the key buffer hit ratio, and […]
Dec 16, 2009 |
MySQL, Percona Events
We’re hiring. We are looking for the following qualifications: Expert knowledge of MySQL. Not just “certified” — years of production experience with it. You need to know server internals, for example. You need to be able to do anything from optimizing difficult queries to moving high-volume services between data centers without interruption. Expert knowledge of […]
Dec 11, 2009 |
MySQL, Percona Events
Now that O’Reilly has announced they’re going to have a MySQL conference independently of Sun/MySQL, we have decided not to proceed with plans for our own Performance Conference. We are participating in the O’Reilly conference, and we will do everything possible to make that a great success for everyone. See you there!
Dec 09, 2009 |
Insight for Developers, MySQL
I can think of at least two major reasons why systems delay flushing changes to durable storage: 1. So they can do the work when it’s more convenient. 2. So they can do less work in total. Let’s look at how the second property can be true.
Oct 23, 2009 |
MySQL, Percona Events
It’s time to announce our plans for Percona Performance Conference 2010. We will hold the event on April 12th and 13th in Santa Clara, California. In the months to come we will announce the theme, the exact location (we have it reserved, but it’s subject to change), the exact dates (we may add days), and […]
Oct 14, 2009 |
MySQL, Percona Events
On the heels of our earlier announcement of Fernando and Yves, I’m happy to welcome Devananda van der Veen to our team. Devananda, also known as Deva, is a talented, detail-oriented MySQL expert and systems administrator. His previous job was at Hydra, an advertising network, where he was sole DBA and half of the systems […]
Oct 08, 2009 |
MySQL, Percona Events
I’m happy to extend a warm welcome to two new members of the Percona team.
First is Yves Trudeau, about whom I can say many things:
One of the top MySQL Cluster (NDB Cluster) experts in the world.
An expert on all things High Availability, including DRBD and Heartbeat.
Many years of experience with Huge Data.
Half of the Waffle Grid team.
A really nice person!
Yves joins us after a tenure of several years as a senior consultant at Sun/MySQL. Together with Matt Yonkovit, he plans to work on WaffleGrid (…