Concepts·MySQL
MySQL Buffer Pool in Practice
A 99.948% hit rate sounds excellent and means almost nothing on its own - the dataset fits in the pool, so of course it does. The useful number is how much of the pool is actually in use.
Performance Guide 34 of 45 Intermediate
- OSUbuntu 26.04 LTS (resolute)
- MySQL8.4.10-0ubuntu0.26.04.1
- Test data400,000 rows, 2 core / 4 GB host
- TimeAbout 14 min
- Reviewed27 August 2026
Written against the versions above. The pool is split into instances - four here - each with its own free list, which reduces contention. The status counters are totals across all of them.
| Server Name | IP Address | OS | Roles | CPU | RAM | HDD |
|---|---|---|---|---|---|---|
| db-a01 | 192.168.0.81 | Ubuntu 26.04 LTS | Primary / Source / Replica Set Member 1 | 2 Core | 4 GB | 50 GB |
Before you start
- The
eventstable, and the 1 GB buffer pool set in the configuration track.
-
Read the pool's size and shape
-
Read the counters that describe its behaviour
-
Compute the hit rate, and distrust it
-
Watch the pool warm
Official sources
- MySQL 8.4 Reference Manual - Optimizing Queries with EXPLAIN
- MySQL 8.4 Reference Manual - Obtaining Execution Plan Information
- MySQL 8.4 Reference Manual - Multiple-Column Indexes
- MySQL 8.4 Reference Manual - Skip Scan Range Access
- MySQL 8.4 Reference Manual - The Slow Query Log
- MySQL 8.4 Reference Manual - InnoDB Locking