Fitur Buffer Pool Extension (BPE) pada instans ApsaraDB RDS for MySQL yang menggunakan disk berkinerja tinggi meningkatkan efisiensi I/O disk dan responsivitas sistem dengan memperluas buffer pool untuk mempercepat caching, sehingga meningkatkan kinerja baca-tulis keseluruhan instans RDS Anda. Topik ini menjelaskan cara kerja BPE, cara menggunakannya, serta hasil pengujian kinerjanya.
Latar Belakang
Membaca data dari disk ke memori dan menulis data dari memori ke disk merupakan operasi I/O database yang umum. Dibandingkan dengan operasi di memori, I/O disk jauh lebih lambat dan memakan waktu lebih lama. Untuk beban kerja yang melibatkan akses data berskala besar atau sering dilakukan, I/O dapat menjadi bottleneck kinerja.
Untuk mengatasi hal ini, ApsaraDB RDS memperkenalkan jenis penyimpanan baru: disk berkinerja tinggi. Kompatibel dengan semua fitur disk ESSD, disk berkinerja tinggi menggunakan arsitektur penyimpanan tiga tingkat untuk mengelola berbagai jenis data dan cache. Fitur ini juga memperkenalkan fitur I/O burst dan Buffer Pool Extension (BPE) untuk meningkatkan kinerja I/O instans RDS Anda.
Buffer Pool Extension (BPE)
Ikhtisar
Buffer pool adalah area memori yang menyimpan cache halaman data dari disk. Saat database perlu mengakses halaman data, buffer pool diperiksa terlebih dahulu:
Jika halaman tersebut ada, data dibaca langsung dari buffer pool.
Jika halaman tersebut tidak ada, data diambil dari disk lalu disimpan di buffer pool.
Logika caching ini secara efektif mengurangi operasi I/O disk dan meningkatkan kinerja instans. Namun, ukuran buffer pool dibatasi oleh kapasitas memori instans. Keterbatasan memori membatasi ukuran cache, yang dapat berdampak negatif pada kinerja I/O.
ApsaraDB RDS for MySQL memperkenalkan fitur Buffer Pool Extension (BPE) untuk memperluas buffer pool. Dengan integrasi ke kernel mesin RDS, BPE secara signifikan meningkatkan kinerja baca-tulis keseluruhan instans ApsaraDB RDS for MySQL, memungkinkan instans memproses lebih banyak perintah dalam periode tertentu, meningkatkan efisiensi I/O, mengurangi waktu respons sistem, dan mempercepat caching.
Manfaat
BPE menerapkan struktur penyimpanan tiga tingkat untuk ApsaraDB RDS for MySQL, memanfaatkan media penyimpanan berbeda untuk memenuhi berbagai kebutuhan penyimpanan data dan meningkatkan kinerja I/O instans:
Peningkatan kinerja baca/tulis dan pengurangan waktu eksekusi SQL
BPE mempercepat akses halaman data dengan melakukan caching operasi baca, sehingga secara signifikan mengurangi waktu eksekusi SQL.
BPE mengurangi frekuensi akses ke file data pada disk berkinerja tinggi, sehingga menurunkan penggunaan bandwidth disk.
Peningkatan stabilitas instans
Disk tempat BPE berada memiliki latensi lebih rendah dibandingkan disk berkinerja tinggi. Desain ini secara signifikan mengurangi dampak jitter I/O dari disk berkinerja tinggi terhadap operasi database, sehingga meningkatkan stabilitas.
Di pusat pengalaman solusi Buffer Pool Extension (BPE), Anda dapat membuat sumber daya RDS nyata untuk membandingkan hasil uji stres dengan dan tanpa BPE. Pengalaman ini gratis. Untuk informasi selengkapnya, lihat Pengamatan kinerja akselerasi I/O disk berkinerja tinggi RDS (BPE).
Nilai bisnis
Fitur Buffer Pool Extension (BPE) untuk instans ApsaraDB RDS for MySQL tersedia tanpa biaya tambahan dan tidak memerlukan perubahan pada aplikasi Anda.
Anda dapat meningkatkan kinerja I/O instans secara signifikan tanpa mengubah biaya atau logika bisnis. Sebagai contoh, untuk instans ApsaraDB RDS for MySQL tipe general-purpose pada Edisi Ketersediaan Tinggi dengan 8 core dan memori 16 GB, mengaktifkan BPE dapat memberikan peningkatan QPS yang signifikan untuk operasi baca dan tulis. Untuk detailnya, lihat Pengujian kinerja.
Cara kerja
Fitur Buffer Pool Extension (BPE) untuk disk berkinerja tinggi memanfaatkan teknologi ekstensi cache untuk meningkatkan kinerja penyimpanan berbasis ESSD tanpa biaya tambahan. Fitur ini beroperasi berdasarkan prinsip pemisahan data panas dan dingin. BPE memperluas buffer pool InnoDB dengan menyimpan cache halaman data hangat ke lapisan ekstensi khusus, memungkinkan InnoDB menggunakan arsitektur penyimpanan multi-tier dan menghasilkan peningkatan kinerja QPS yang signifikan.
Arsitektur
Gambar berikut menunjukkan arsitektur penerapan BPE.

BPE menggunakan disk berkecepatan tinggi sebagai media caching, menciptakan tingkat penyimpanan antara antara memori dan disk berkinerja tinggi. Disk berkecepatan tinggi ini menawarkan latensi I/O lebih rendah dan kinerja lebih unggul dibandingkan disk berkinerja tinggi.
Disk berkecepatan tinggi hanya digunakan untuk caching.
File data, file binlog, dan file redo tetap berada di disk berkinerja tinggi.
Dengan memperluas buffer pool InnoDB, halaman data di-cache ke Buffer Pool Extension, memungkinkan InnoDB menggunakan berbagai media caching secara fleksibel.
Proses pembacaan data
Saat fitur Buffer Pool Extension (BPE) diaktifkan, halaman data instans di-cache di Buffer Pool Extension pada disk berkecepatan tinggi.
Buffer Pool Extension hanya menyimpan halaman bersih (clean pages), yang identik dengan data dalam file data di disk berkinerja tinggi.
Proses pembacaan halaman data adalah sebagai berikut:
Klien meminta membaca halaman data.
Database pertama-tama mencari halaman tersebut di buffer pool memori:
Jika ditemukan, database mengembalikannya ke klien.
Jika tidak ditemukan, database melanjutkan ke langkah berikutnya.
Database kemudian mencari halaman tersebut di Buffer Pool Extension pada disk berkecepatan tinggi:
Jika ditemukan, database menyalin halaman tersebut ke buffer pool dan mengembalikannya ke klien.
Jika tidak ditemukan, database melanjutkan ke langkah berikutnya.
Database mengambil halaman tersebut dari file tabel data di disk berkinerja tinggi, menyalinnya ke buffer pool, lalu mengembalikannya ke klien.
Penerapan
Mesin: ApsaraDB RDS for MySQL
Versi: MySQL 8.0 dengan versi mesin minor 20230914 atau lebih baru
Edisi: Edisi Ketersediaan Tinggi atau Edisi Kluster
Jenis produk: Standard
Family instans: general-purpose
Wilayah dan zona ketersediaan (hanya sebagai referensi; lihat Konsol untuk informasi terbaru):
Wilayah
Zona ketersediaan
China (Chengdu)
Zone B
China (Beijing)
Zone I
China (Shanghai)
Zone M
Zone N
China (Hangzhou)
Zone J
Penagihan
Fitur Buffer Pool Extension (BPE) tersedia tanpa biaya tambahan untuk instans ApsaraDB RDS for MySQL tipe general-purpose yang menggunakan disk berkinerja tinggi.
Tindakan Pencegahan
Fitur BPE gratis untuk instans ApsaraDB RDS for MySQL tipe general-purpose yang menggunakan disk berkinerja tinggi.
Kehilangan data di Buffer Pool Extension tidak memengaruhi data bisnis Anda, yang disimpan secara persisten di data disk. Instans dapat terus beroperasi secara normal.
Mengaktifkan BPE menyisihkan sebagian kecil memori (4% dari
buffer_pool_size). Nilai defaultbuffer_pool_sizesecara otomatis dikurangi 4% untuk mengakomodasi hal ini. Jika Anda mengubahbuffer_pool_sizenanti, sesuaikan nilainya berdasarkan metrik penggunaan memori.Mengaktifkan atau menonaktifkan BPE menyebabkan gangguan layanan singkat sekitar 15 detik. Kami menyarankan melakukan operasi ini selama jam sepi.
Setelah Anda mengaktifkan BPE, kinerja instans meningkat secara signifikan. Semakin besar spesifikasi instans, semakin terlihat peningkatannya. Sebagai contoh, kinerja instans ApsaraDB RDS for MySQL tipe general-purpose Edisi Ketersediaan Tinggi dengan 8 core dan 16 GB memori dapat meningkat hingga 103%.
Menggunakan Buffer Pool Extension (BPE)
Aktifkan BPE
Buka halaman Instances, pilih wilayah di bagian atas, lalu klik ID instans target.
Pada bagian Basic Information, temukan Storage Type dan klik High-performance Disk Settings. Pada kotak dialog yang muncul, aktifkan sakelar Buffer Pool Extension (BPE).
Nonaktifkan BPE
Buka halaman Instances, pilih wilayah di bagian atas, lalu klik ID instans target.
Pada bagian Basic Information, temukan Storage Type dan klik High-performance Disk Settings. Pada kotak dialog yang muncul, nonaktifkan sakelar Buffer Pool Extension (BPE).
Pengujian kinerja
Konfigurasi pengujian
Metode pengujian: Untuk spesifikasi instans tertentu, bandingkan kinerja QPS sebelum dan setelah mengaktifkan fitur BPE.
Ukuran data pengujian: 300 GB
Tool pengujian: Sysbench (Untuk informasi selengkapnya, lihat dokumentasi resmi Sysbench.)
CatatanAnda harus terlebih dahulu membuat instans ECS. Dalam pengujian ini, tool diinstal pada instans ECS.
Instans pengujian: Pengujian ini menggunakan dua instans ApsaraDB RDS for MySQL tipe general-purpose Edisi Ketersediaan Tinggi dengan spesifikasi berbeda: satu dengan 4 core dan memori 8 GB, serta satu lagi dengan 8 core dan memori 16 GB. Untuk masing-masing instans, kinerja diukur sebelum dan setelah mengaktifkan BPE.
Edisi
Tipe instans
CPU dan memori
High-availability Edition
mysql.n2.large.xc
4 core, 8 GB
High-availability Edition
mysql.n2.xlarge.xc
8 core, 16 GB
Prosedur pengujian
Pengujian ini menggunakan CentOS sebagai contoh. Untuk petunjuk instalasi Sysbench pada sistem operasi lain, lihat dokumentasi resmi Sysbench.
Instal Sysbench
Jalankan perintah berikut untuk menginstal 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 install
Uji kinerja QPS
Deskripsi parameter
Tabel berikut menjelaskan parameter yang digunakan dalam pengujian ini.
Parameter | Deskripsi |
--tables | Jumlah tabel. |
--table_size | Jumlah baris dalam setiap tabel. |
--rand-type | Jenis distribusi bilangan acak. |
--rand-spec-pct | Presentase nilai "spesial" untuk distribusi bilangan acak yang ditentukan. |
--threads | Jumlah thread konkuren. |
--time | Durasi pengujian, dalam detik. |
Uji kinerja baca
Siapkan data: Jalankan perintah berikut untuk menyiapkan data 300 GB (30 tabel, masing-masing 40 juta baris).
sysbench oltp_read_only --tables=30 --table_size=40000000 --rand-type=special --rand-spec-pct=15 --threads=64 --time=100 prepareUji kinerja baca: Jalankan perintah berikut untuk menguji kinerja baca instans.
sysbench oltp_read_only --tables=30 --table_size=40000000 --rand-type=special --rand-spec-pct=15 --threads=64 --time=100 run
Uji kinerja tulis
Siapkan data: Jalankan perintah berikut untuk menyiapkan data 300 GB (30 tabel, masing-masing 40 juta baris).
sysbench oltp_write_only --tables=30 --table_size=40000000 --rand-type=special --rand-spec-pct=15 --threads=64 --time=100 prepareUji kinerja tulis: Jalankan perintah berikut untuk menguji kinerja tulis instans.
sysbench oltp_write_only --tables=30 --table_size=40000000 --rand-type=special --rand-spec-pct=15 --threads=64 --time=100 run
Uji kinerja baca/tulis
Siapkan data: Jalankan perintah berikut untuk menyiapkan data 300 GB (30 tabel, masing-masing 40 juta baris).
sysbench oltp_read_write --tables=30 --table_size=40000000 --rand-type=special --rand-spec-pct=15 --threads=64 --time=100 prepareUji kinerja baca/tulis: Jalankan perintah berikut untuk menguji kinerja baca/tulis instans.
sysbench oltp_read_write --tables=30 --table_size=40000000 --rand-type=special --rand-spec-pct=15 --threads=64 --time=100 run
Hasil pengujian
Hasil untuk instans ApsaraDB RDS for MySQL tipe general-purpose Edisi Ketersediaan Tinggi dengan 4 core dan 8 GB memori:
Kinerja baca: QPS hampir identik sebelum dan setelah mengaktifkan BPE.
Kinerja tulis: QPS meningkat 30% setelah mengaktifkan BPE.
Kinerja baca/tulis: QPS meningkat 26% setelah mengaktifkan BPE.

Hasil untuk instans ApsaraDB RDS for MySQL tipe general-purpose Edisi Ketersediaan Tinggi dengan 8 core dan 16 GB memori:
Kinerja baca: QPS meningkat 80% setelah mengaktifkan BPE.
Kinerja tulis: QPS meningkat 33% setelah mengaktifkan BPE.
Kinerja baca/tulis: QPS meningkat 103% setelah mengaktifkan BPE.
