Hitler Reacts to Removal of MySQL's Query Cache

The removal of the query cache in MySQL 8.0 improves user experience and has been celebrated by many members of the MySQL community. With this good news, obviously, Hitler isn’t happy. (Parody Video).

» Continue Reading (about 100 words)

Analyzing Changing Workloads with the USL

Production servers often have much more dynamic, complex workload and behaviors than you might be accustomed to seeing, because most monitoring products aggregate system behavior into high-level global metrics, losing all the detail. Multivariate analysis by another dimension often reveals something unexpected about server behavior. This can prompt you to explore the system, and sometimes leads to a deeper understanding of it. Here’s one such example.

row-36-ts

» Continue Reading (about 400 words)

Defining Moments in Database History

The rise of the LAMP stack in the early- to mid-2000s created a shift in the technology landscape, as well as the impetus for contenders to emerge. I’ve been reflecting on key factors in that phenomenon and what’s happened since then—and what it can teach us about what’s happening now.

Crossroads

» Continue Reading (about 1900 words)

Meeting The Challenges of Monitoring In The Cloud

I’ll be visiting MIT’s Tang Center on October 10 in Boston to talk about monitoring. Join me!

Tang

» Continue Reading (about 400 words)

How to Extract Data Points From a Chart

I often see benchmark reports that show charts but don’t provide tables of numeric results. Some people will make the actual measurements available if asked, but I’ve been interested in analyzing many systems for which I can’t get numbers. Fortunately, it’s usually possible to get approximate results without too much trouble. In this blog post I’ll show several ways to extract estimates of values from a chart image.

Extracting

» Continue Reading (about 1000 words)

What Does The Universal Scalability Law Reveal About MySQL?

In the last couple of weeks, there have been a few blog posts about benchmarks comparing the performance of various versions of MySQL and variants such as MariaDB. There’s also been some analysis of the results using formal models such as Neil Gunther’s Universal Scalability Law.

What can the Universal Scalability Law (USL) teach us about the performance characteristics of these systems, as revealed by the benchmarks? To find out, I’ll examine one particular benchmark, MariaDB 10.1 and MySQL 5.7 performance on commodity hardware.

chicken

» Continue Reading (about 800 words)

Don't Miss PGConfSV, Silicon Valley's Newest PostgreSQL Conference

If you haven’t heard about PGConfSV yet, it’s a conference for the Silicon Valley PostgreSQL community and beyond, featuring leading PostgreSQL performance and scalability experts. It’s happening November 17-18 at the South San Francisco Conference Center. I encourage everyone in the area to attend, since this is likely to be the best Postgres conference held thus far in the Silicon Valley.

I also urge you to buy your tickets before they sell out! Of course, the earlier you buy, the more you save, too. (Use SeeMeSpeak for a 20% discount).

Convention Center

I’ll be at the conference along with some of my colleagues. I’m pretty excited about this for a few reasons. Allow me to ‘splain why?

» Continue Reading (about 400 words)

The Case For Tagging In Time Series Data

A while ago I wrote a blog post about time series database requirements that has been amazingly popular. Somewhere close to a dozen companies have told me they’ve built custom in-house time series databases, and that blog post was the first draft of a design document for it.

One of the things I said in the post was that I had no use for the “tagging” functionality I’ve seen in time series databases such as OpenTSDB. I’ve since reconsidered, although I think the functionality I now want is a bit different.

tagged

» Continue Reading (about 700 words)

Baron Schwartz Left Percona

A number of people have commented to me over the last few years that when they search for me on Google, it suggests that they might want to search for “Baron Schwartz left Percona.” This is a top suggestion when I search for myself, too.

Google

Since people are searching for it, maybe I should explain it.

» Continue Reading (about 300 words)

An Outline for a Book on InnoDB

Years ago I pursued my interest in InnoDB’s architecture and design, and became impressed with its sophistication. Another way to say it is that InnoDB is complicated, as are all MVCC databases. However, InnoDB manages to hide the bulk of its complexity entirely from most users.

Iceberg

I decided to at least outline a book on InnoDB. After researching it for a while, it became clear that it would need to be a series of books in multiple volumes, with somewhere between 1000 and 2000 pages total.

At one time I actually understood a lot of this material, but I have forgotten most of it now.

I did not begin writing. Although it is incomplete, outdated, and in some cases wrong, I share the outline here in case anyone is interested. It might be of particular interest to someone who thinks it’s an easy task to write a new database.

» Continue Reading (about 5700 words)

New O'Reilly Book, Anomaly Detection For Monitoring

Together with Preetam Jinka, I wrote a book for O’Reilly called Anomaly Detection for Monitoring.

The book contains great examples of anomaly detection used for monitoring. It’s practical and simple, and contains no hype.

Outlier

» Continue Reading (about 100 words)

Your Real Database Bottleneck

Database performance optimization is usually concerned with indexes, SQL design, lock contention, and the like. But the real database bottleneck is the siloed culture that accretes around the database and has far more pernicious ripple effects than you might think. The real opportunity in database optimization is the interplay between the technology and the team, and its communication structures.

Bottleneck

» Continue Reading (about 900 words)

What Makes A Database Mature?

Many database vendors would like me to take a look at their products and consider adopting them for all sorts of purposes. Often they’re pitching something quite new and unproven as a replacement for mature, boring technology I’m using happily.

I would consider a new and unproven technology, and I often have. As I’ve written previously, though, a real evaluation takes a lot of effort, and that makes most evaluations non-starters.

Perhaps the most important thing I’m considering is whether the product is mature. There are different levels of maturity, naturally, but I want to understand whether it’s mature enough for me to take a look at it. And in that spirit, it’s worth understanding what makes a database mature.

Bristlecone

» Continue Reading (about 2300 words)

History Repeats: MySQL, MongoDB, Percona, and Open Source

History is repeating again. MongoDB is breaking out of the niche into the mainstream, performance and instrumentation are terrible in specific cases, MongoDB isn’t able to fix all the problems alone, and an ecosystem is growing.

Leaf

» Continue Reading (about 600 words)

State Of The Storage Engine - DZone

I contributed an article on modern database storage engines to the recent DZone Guide To Database and Persistence Management. I’m cross-posting the article below with DZone’s permission.

Boardwalk

» Continue Reading (about 1400 words)

Scaling Backend Systems at VividCortex

I wrote a guest post for High Scalability about how we scale our backend systems at VividCortex. It’s heavy on MySQL, sprinkled with a little bit of Redis’s magic pixie dust, and Kafka is also a key part of the architecture.

fern

» Continue Reading (about 300 words)

If Eventual Consistency Seems Hard, Wait Till You Try MVCC

This should sound familiar:

One of the great lies about NoSQL databases is that they’re simple. Simplicity done wrong makes things a lot harder and more complicated to develop and operate. Programmers and operations staff end up reimplementing (badly) things the database should do.

Nobody argued this line of reasoning more vigorously than when trying to defend relational databases, especially during the darkest years (ca. 2009-2010), when NoSQL still meant NO SQL DAMMIT, all sorts of NoSQL databases were sprouting, and most of them were massively overhyped. But as valid as those arguments against NoSQL’s “false economy” simplicity were and are, the arguments against relational databases’ complexity hold true, too.

Puzzle

» Continue Reading (about 3100 words)

Time-Series Database Requirements

I’ve had conversations about time-series databases with many people over the last couple of years. I wrote previously about some of the open-source technologies that people commonly use for time-series storage.

Time Series

Because I have my own ideas about what constitutes a good time-series database, and because a few people have asked me to describe my requirements, I have decided to publish my thoughts here. All opinions that follow are my own, and as you read you should mentally add “in my opinion” to every sentence.

» Continue Reading (about 1600 words)

Can MySQL be a 12-factor service?

A while ago I wrote about some of the things that can make MySQL unreliable or hard to operate. Some time after that, in a completely unrelated topic, someone made me aware of a set of principles called 12-factor that I believe originated from experiences building Heroku.

Dodecahedron

That’s been over a year, and I’ve come to increasingly agree with the 12-factor principles. I guess I’m extremely late to the party, but making applications behave in 12-factor-compliant ways has solved a lot of problems for me.

This experience has repeatedly reminded me of one of the applications that continues to cause a lot of the kinds of pain that the 12-factor principles have solved for me: MySQL.

» Continue Reading (about 500 words)

Go MySQL Drivers

If you’re interested in Google’s Go programming language, perhaps you aren’t sure what drivers to use for MySQL. The good news is there are excellent drivers for MySQL. There are several opensource ones on GitHub and elsewhere, but the driver I recommend is https://github.com/go-sql-driver/mysql/. Why? It is pure Go, not a wrapper around a C library, and is liberally licensed. It is high performance. A lot of work has gone into making it avoid allocations and consume minimal CPU.

» Continue Reading (about 300 words)