You'll find several books on basic or advanced MySQL performance, but nothing in between. That's because explaining MySQL performance without addressing its complexity is difficult. This practical book bridges the gap by teaching software engineers mid-level MySQL knowledge beyond the fundamentals, but well shy of deep-level internals required by database administrators (DBAs).

In Efficient MySQL Performance, I show you how to apply the best practices and techniques that directly affect MySQL performance. You'll learn how to improve performance by analyzing query execution, indexing for common SQL clauses and table joins, optimizing data access, and understanding the most important MySQL metrics. You'll also discover how replication, transactions, row locking, and the cloud influence MySQL performance.

  • Understand why query response time is the North Star of MySQL performance
  • Learn query metrics in detail, including aggregation, reporting, and analysis
  • See how to index effectively for common SQL clauses and table joins
  • Explore the most important server metrics and what they reveal about performance
  • Dive into transactions and row locking to gain deep, actionable insight
  • Achieve remarkable MySQL performance at any scale

MySQL IOPS for Reads and Surprsies

When you think about IOPS, you probably think about writes because MySQL write I/O has a long tradition of optimization, benchmarking, new algorithms, new storage engines, and so forth. There’s no shortage of material on MySQL write I/O; just two examples from Percona are Scaling IO-Bound Workloads for MySQL in the Cloud and Tuning MySQL/InnoDB Flushing for a Write-Intensive Workload. But in this short blog post I highlight two other, less common aspects of MySQL I/O: reads and surprises. Read more...
  •  Is MySQL in the Cloud the End of the DBA?
  •  How Not to Use MySQL
  •  Mining the MySQL Performance Schema for Transactions
  •  Better Replication Heartbeats
  •  InnoDB Page Flushing Diagram
  •  NewDB: Fate of an Open Source Database
  •  I Don't Want to Shard (MySQL)
  •  Access Patterns for MySQL
  •  Performance Is Less
  •  MySQL EXPLAIN ANALYZE
  •  Configuring MySQL Query Metrics
  •  Efficient MySQL Performance
  •  MySQL LRU Flushing and I/O Capacity
  •  MySQL Data Locks: Mapping 8.0 to 5.7
  •  MySQL Password Rotation with AWS
  •  Query Metrics Requirements for MySQL
  •  What the Flush?
  •  21 Parameter Group Values to Change in Amazon RDS for MySQL
  •  Missing Writes with MySQL GTID
  •  MySQL Threads Running
  •  Queries Effect Performance
  •  Fixing Ghosted GTIDs
  •  Response Time SLA
  •  Path and Dimension Metrics
  •  3 Golang Error Types
  •  3 Golang Channel Red Flags
  •  Component-based Software Design
  •  When MySQL Goes Away
  •  Thinking in Go
  •  Bootloader Design Pattern
  •  Database Scalability: Contention and Crosstalk
  •  Crash-safe MySQL Replication
  •  Tech Workers Are Good People
  •  Approaching a New Software Project
  •  Ideas, Leaders, and Engineers
  •  Five-Point Checklist for Excellent Software
  •  Designing Tools for Integration
  •  How To Test the Database
  •  Design Before Implementation
  •  Reading os/exec.Cmd Output Without Race Conditions
  •  Custom MongoDB Replica Set Write Concern