Topik ini menjelaskan fitur Pool Buffer Hangat dari PolarDB, termasuk mekanismenya, manfaat, dan catatan penggunaan.
Informasi latar belakang
PolarDB untuk MySQL menyediakan fitur Pool Buffer Hangat. Saat node utama di-restart secara manual atau karena pengecualian, data yang tersimpan dalam buffer pool dapat digunakan untuk mempercepat restart dan memastikan kinerja tetap konsisten.
Prasyarat
Kluster PolarDB menjalankan MySQL 8.0.2, dengan versi revisi 8.0.2.1.0 atau lebih baru. Untuk informasi tentang cara melihat nomor versi kluster Anda, lihat bagian "Query the engine version" dari Versi Mesin.
Fitur kompresi tabel tidak diaktifkan.
Cara kerjanya
Fitur Warmer Buffer Pool di PolarDB untuk MySQL menggunakan memori bersama di Linux. Pool buffer InnoDB di host fisik dipisahkan dari proses PolarDB untuk memungkinkan node utama di-restart dengan cepat.
Gambar berikut menunjukkan arsitektur fitur tersebut.

Informasi kontrol dari buffer pool dan halaman, serta data di halaman disimpan di memori yang dialokasikan dari memori bersama. Mereka independen dari proses PolarDB.
Jika buffer pool independen sudah ada, PolarDB dapat dilampirkan dengannya.
PolarDB dapat memperbaiki buffer pool yang menjadi tidak konsisten setelah crash node dan membuatnya konsisten kembali.
Saat node utama di-restart secara manual, PolarDB dapat menyimpan informasi utama transaksi. Dengan cara ini, restart dapat jauh lebih cepat karena rollback saat shutdown dan pemulihan saat startup dilewati.
mysqlshm adalah alat manajemen buffer pool yang disediakan oleh PolarDB untuk MySQL. Anda dapat menggunakannya untuk melakukan operasi O&M pada buffer pool, seperti menanyakan konfigurasi dan melepaskan buffer pool.
Manfaat
Saat node utama kluster Anda di-restart, fitur Warmer Buffer Pool dapat mempercepat proses dan memastikan kinerja tetap konsisten.
Kecepatan Lebih Tinggi: Warmer Buffer Pool secara signifikan mengurangi waktu yang dibutuhkan saat node utama di-restart secara manual atau karena pengecualian. Efeknya sangat terlihat ketika node utama menggunakan buffer pool besar dan menangani sejumlah besar operasi tulis dan transaksi besar. Dalam skenario ini, restart node utama mungkin membutuhkan beberapa menit. Warmer Buffer Pool dapat mempercepatnya menjadi detik.
Kinerja Konsisten: Warmer Buffer Pool menghilangkan kebutuhan untuk memanaskan ulang buffer pool selama restart, karena data yang baru saja digunakan tidak dipindahkan bolak-balik antara buffer pool dan memori node. Dengan cara ini, tidak ada penurunan kinerja setelah restart.
Contoh:
Gambar berikut menunjukkan throughput buffer pool 50 GB selama restart dengan dan tanpa Warmer Buffer Pool diaktifkan. Beban kerja sysbench OLTP read-only digunakan untuk pengujian.
Analisis hasil:Ketika Warmer Buffer Pool tidak diaktifkan (ditunjukkan oleh garis oranye), throughput hanya 2% dari level normal segera setelah restart. Secara bertahap kembali normal setelah sekitar 200 detik.
Ketika Warmer Buffer Pool diaktifkan (ditunjukkan oleh garis biru), throughput tidak menurun selama restart.
Catatan penggunaan
Deskripsi parameter
Parameter | Tipe | Level | Deskripsi |
innodb_buf_shm_key | Integer | Global | Pengenal unik untuk setiap proses PolarDB.
|
innodb_buf_shm_base_addr | Integer | Global | Offset dasar dari alamat ruang memori virtual dari buffer pool bersama. Memori bersama dipetakan ke ruang memori virtual PolarDB berdasarkan alamat.
|
innodb_buf_page_desc_free_list_size | Integer | Global | Jumlah halaman yang dicadangkan untuk menetapkan deskriptor untuk halaman terkompresi.
|
innodb_buf_free_zip_pages | Integer | Global | Metode untuk menangani halaman terkompresi.
|
innodb_buffer_pool_parallel_scan_threads | Integer | Global | Jumlah thread untuk pemindaian paralel.
|
innodb_buf_shm_enormous_page | Bool | Global | Menentukan apakah akan mengaktifkan halaman besar saat sistem mengalokasikan memori bersama.
|
innodb_fast_shutdown | Integer | Global | Mode shutdown InnoDB.
|
Parameter status
Tabel berikut menjelaskan nilai valid dari parameter innodb_shared_buffer_pool_status yang menunjukkan status fitur Warmer Buffer Pool.
Nilai | Deskripsi |
Menggunakan memori pribadi proses | Fitur Warmer Buffer Pool dinonaktifkan. Memori pribadi digunakan. |
Alokasikan dari memori bersama | PolarDB menggunakan memori yang dialokasikan dari memori bersama. |
Lampirkan ke memori bersama shutdown bersih | PolarDB terhubung ke buffer pool yang telah dibersihkan dan dimatikan. |
Lampirkan ke memori bersama shutdown abnormal | PolarDB terhubung ke buffer pool yang crash. |
mysqlshm
PolarDB untuk MySQL menyediakan alat mysqlshm untuk mengelola fitur Warmer Buffer Pool.
Usage: mysqlshm -k key [options]
-h, Tampilkan bantuan ini dan keluar.
-k, Kunci memori bersama [WAJIB]
-i, Cetak info dasar memori bersama
-f, Lepaskan memori bersamaProsedur
Restart manual
Atur parameter inndb_buf_shm_key di my.cnf ke nilai bukan nol. Kemudian, mulai kluster PolarDB.
Setelah kluster dimulai, periksa parameter innodb_shared_buffer_pool_status. Nilainya harus Alokasikan dari memori bersama.
Atur parameter innodb_fast_shutdown ke 3.
Restart node utama.
Setelah restart, periksa parameter innodb_shared_buffer_pool_status. Nilainya harus Lampirkan ke memori bersama shutdown bersih.
Restart karena pengecualian
Atur parameter inndb_buf_shm_key di my.cnf ke nilai bukan nol. Kemudian, mulai kluster PolarDB.
Setelah kluster dimulai, periksa parameter innodb_shared_buffer_pool_status. Nilainya harus Alokasikan dari memori bersama.
Hentikan proses mysqld untuk mensimulasikan crash node.
Tunggu node untuk restart.
Setelah node utama di-restart, periksa parameter innodb_shared_buffer_pool_status. Nilainya harus Lampirkan ke memori bersama shutdown abnormal.