Buffer Pool Extension (BPE) expands the InnoDB buffer pool using high-speed disks as a cache layer between memory and storage, improving QPS by up to 103% on general-purpose RDS MySQL instances — at no extra cost.
Use cases
BPE delivers the most benefit when the working dataset exceeds available memory, forcing repeated disk reads. Consider enabling it for:
Read-heavy workloads with large datasets — queries that frequently access data pages not resident in memory benefit most from the additional cache layer.
Mixed read/write workloads — the extra cache reduces I/O pressure on high-performance disks, cutting SQL execution time and write latency.
Larger instance types — the performance gain scales with instance size. An 8-core, 16 GB instance sees up to 103% improvement in mixed QPS, while a 4-core, 8 GB instance sees up to 30% improvement in write QPS.
How it works
Disk I/O is the most common performance bottleneck in database systems. When the buffer pool (an in-memory cache of data pages) is full, every cache miss triggers a read from disk — the slowest operation in the stack.
BPE inserts a high-speed disk cache between memory and the high-performance data disk. When a data page is not found in the buffer pool, the system checks BPE before falling back to the data disk. This three-tier read path significantly reduces requests that reach the slowest storage layer.
Three-tier storage architecture:

Data page read path:
The client requests a data page.
The system checks the in-memory buffer pool.
Found: return to the client.
Not found: proceed to step 3.
The system checks BPE on the high-speed disk.
Found: load into the buffer pool, then return to the client.
Not found: proceed to step 4.
The system reads the data page from the high-performance disk, loads it into the buffer pool, and returns it to the client.
BPE stores only clean pages — data pages that are consistent with the data files on the high-performance disk. Data files, binlog files, and redo log files are always stored on the high-performance disk, not in BPE. If BPE data is lost, service data is unaffected.
Prerequisites
Before you begin, make sure that your instance meets all of the following requirements:
Database engine: MySQL 8.0, minor engine version 20230914 or later
Edition: RDS High-availability Edition or Cluster Edition
Product type: standard
Instance type: general-purpose
Region and zone: one of the following
| Region | Zone |
|---|---|
| China (Chengdu) | Zone B |
| China (Beijing) | Zone I |
| China (Shanghai) | Zone M, Zone N |
| China (Hangzhou) | Zone J |
Check the ApsaraDB RDS console to confirm supported regions and zones.
Billing
BPE is free for RDS MySQL general-purpose instances with high-performance disks.
Enable BPE
Go to the ApsaraDB RDS instance list, select a region at the top, and click the target instance ID.
In the Basic Information section, click Storage Type next to Configure Premium ESSD.
In the dialog box, turn on the Buffer Pool Extension (BPE) switch.
Disable BPE
Go to the ApsaraDB RDS instance list, select a region at the top, and click the target instance ID.
In the Basic Information section, click Storage Type next to Configure Premium ESSD.
In the dialog box, turn off the Buffer Pool Extension (BPE) switch.
Usage notes
Enabling or disabling BPE causes approximately 30 seconds of downtime. Perform this operation during off-peak hours.
BPE consumes memory equal to 4% of
buffer_pool_size. When you enable BPE, thebuffer_pool_sizevalue is automatically reduced by 4%. Adjustbuffer_pool_sizebased on your memory usage metrics if needed.Performance improvement scales with instance size. Larger instances see more significant gains.
BPE loss does not affect service data. Service data is persistently stored on the high-performance disk.
Performance testing
The following test results compare QPS before and after enabling BPE on two instance types.
Test setup
| Item | Details |
|---|---|
| Method | Compare QPS on the same instance type with BPE disabled vs. enabled |
| Data volume | 300 GB (30 tables × 40,000,000 rows per table) |
| Tool | Sysbench installed on an ECS instance |
Test instances:
| Edition | Instance type code | CPU and memory |
|---|---|---|
| High-availability Edition | mysql.n2.large.xc | 4 cores, 8 GB |
| High-availability Edition | mysql.n2.xlarge.xc | 8 cores, 16 GB |
Run the tests
This example uses CentOS. For other operating systems, see the Sysbench documentation.
Install Sysbench:
git clone https://github.com/akopytov/sysbench.git
cd sysbench
git checkout 0.5
yum -y install make automake libtool pkgconfig libaio-devel
yum -y install mariadb-devel
./autogen.sh
./configure
make -j
make installAll test commands use the same dataset parameters: 30 tables, 40,000,000 rows per table, special random distribution with 15% special values, 64 concurrent threads, and a 100-second run.
Test read performance:
# Prepare data
sysbench oltp_read_only --tables=30 --table_size=40000000 --rand-type=special --rand-spec-pct=15 --threads=64 --time=100 prepare
# Run test
sysbench oltp_read_only --tables=30 --table_size=40000000 --rand-type=special --rand-spec-pct=15 --threads=64 --time=100 runTest write performance:
# Prepare data
sysbench oltp_write_only --tables=30 --table_size=40000000 --rand-type=special --rand-spec-pct=15 --threads=64 --time=100 prepare
# Run test
sysbench oltp_write_only --tables=30 --table_size=40000000 --rand-type=special --rand-spec-pct=15 --threads=64 --time=100 runTest mixed read/write performance:
# Prepare data
sysbench oltp_read_write --tables=30 --table_size=40000000 --rand-type=special --rand-spec-pct=15 --threads=64 --time=100 prepare
# Run test
sysbench oltp_read_write --tables=30 --table_size=40000000 --rand-type=special --rand-spec-pct=15 --threads=64 --time=100 runTest results
4 cores, 8 GB (`mysql.n2.large.xc`):
Read: no significant change
Write: +30% QPS
Mixed read/write: +26% QPS

8 cores, 16 GB (`mysql.n2.xlarge.xc`):
Read: +80% QPS
Write: +33% QPS
Mixed read/write: +103% QPS

To observe real-time BPE performance on live RDS resources at no cost, see RDS high-performance disk I/O acceleration (BPE) performance observation.