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

How Not to Use MySQL

Chapter 9

Chapter 9 of Efficient MySQL Performance changed in development. Originally, it was a chapter titled “Not MySQL”, as in “how not to use MySQL.” But we (O’Reilly and I) pulled the chapter, and the current chapter 9 in print is “Other Challenges”: an important laundry list of other challenges engineers using MySQL must be aware of and address. This blog post is a sketch of the unwritten chapter 9: 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
  •  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