All Products
Search
Document Center

PolarDB:Warm Buffer Pool

Last Updated:Mar 29, 2026

Saat node primary PolarDB for MySQL melakukan restart, kolam buffer InnoDB-nya dimulai dalam keadaan kosong. Database memuat ulang halaman dari penyimpanan sesuai permintaan, sehingga kinerja menurun hingga kolam tersebut terisi kembali—proses yang dapat memakan waktu beberapa menit di bawah beban kerja tulis yang berat atau volume transaksi besar. Warm Buffer Pool menghilangkan periode cold-start ini dengan menyimpan kolam buffer di memori bersama Linux, terlepas dari proses database. Kolam buffer tetap ada meskipun terjadi restart dan langsung tersedia saat node kembali aktif.

Prasyarat

Sebelum mengaktifkan Warm Buffer Pool, pastikan bahwa:

  • Kluster PolarDB menjalankan MySQL 8.0.2 dengan versi revisi 8.0.2.1.0 atau lebih baru. Untuk memeriksa versi, lihat bagian "Query the engine version" pada Engine versions.

  • Fitur kompresi tabel tidak diaktifkan.

Cara Kerja

Warm Buffer Pool menyimpan kolam buffer InnoDB di memori bersama Linux, bukan di memori proses. Karena kolam buffer tidak bergantung pada proses PolarDB, ia tetap bertahan meskipun terjadi restart.

warmbp.jpg

Perilaku utama:

  • Persistensi selama restart: Data kontrol kolam buffer, metadata halaman, dan data halaman disimpan di memori bersama. Saat PolarDB dimulai, ia menyambungkan ke kolam buffer memori bersama yang sudah ada alih-alih mengalokasikan yang baru.

  • Pemulihan setelah crash: Setelah node mengalami crash, PolarDB mendeteksi dan memperbaiki ketidakkonsistenan apa pun pada kolam buffer memori bersama sebelum menyambungkannya.

  • Shutdown bersih yang lebih cepat: Pada restart manual, PolarDB menyimpan status transaksi utama sebelum shutdown. Hal ini menghilangkan proses rollback saat shutdown maupun pemulihan saat startup, sehingga waktu restart berkurang secara signifikan.

  • Operasi O&M: Tool mysqlshm memungkinkan Anda mengkueri konfigurasi dan melepaskan kolam buffer memori bersama dari command line.

Manfaat

Restart lebih cepat

Warm Buffer Pool mengurangi waktu restart node primary dari hitungan menit menjadi detik. Peningkatan paling terasa ketika node primary memiliki kolam buffer besar dan menangani beban kerja tulis berat atau transaksi besar.

Kinerja pasca-restart yang konsisten

Karena kolam buffer tetap berada di memori bersama, halaman yang baru saja diakses masih tersedia setelah restart. Tidak ada periode pemanasan dan tidak ada penurunan kinerja.

Gambar berikut menunjukkan throughput selama restart dengan kolam buffer 50 GB, menggunakan beban kerja Sysbench OLTP read-only.

image.png
  • Tanpa Warm Buffer Pool (garis oranye): throughput turun menjadi 2% dari kondisi normal segera setelah restart dan membutuhkan sekitar 200 detik untuk pulih.

  • Dengan Warm Buffer Pool (garis biru): throughput tidak terpengaruh selama restart.

Aktifkan Warm Buffer Pool

Untuk restart manual

  1. Atur innodb_buf_shm_key ke nilai bukan nol di my.cnf, lalu mulai kluster PolarDB.

  2. Verifikasi bahwa fitur ini aktif:

    SHOW GLOBAL STATUS LIKE 'innodb_shared_buffer_pool_status';

    Nilainya harus Allocate from shared memory.

  3. Atur innodb_fast_shutdown ke 3:

    SET GLOBAL innodb_fast_shutdown = 3;
  4. Restart node primary.

  5. Setelah restart, periksa kembali statusnya:

    SHOW GLOBAL STATUS LIKE 'innodb_shared_buffer_pool_status';

    Nilainya harus Attach to clean shutdown shared memory, yang berarti node tersebut menyambungkan ke kolam buffer yang dimatikan secara bersih.

Untuk restart yang dipicu oleh exception

  1. Atur innodb_buf_shm_key ke nilai bukan nol di my.cnf, lalu mulai kluster PolarDB.

  2. Verifikasi bahwa fitur ini aktif:

    SHOW GLOBAL STATUS LIKE 'innodb_shared_buffer_pool_status';

    Nilainya harus Allocate from shared memory.

  3. Hentikan proses mysqld untuk mensimulasikan crash node.

  4. Tunggu hingga node melakukan restart.

  5. Setelah restart, periksa kembali statusnya:

    SHOW GLOBAL STATUS LIKE 'innodb_shared_buffer_pool_status';

    Nilainya harus Attach to abnormal shutdown shared memory, yang berarti PolarDB telah mendeteksi dan memulihkan kolam buffer memori bersama dari kondisi crash.

Referensi

Parameter

ParameterTipeTingkatDeskripsi
innodb_buf_shm_keyIntegerGlobalIdentifier unik untuk kolam buffer memori bersama. Atur ke nilai bukan nol untuk mengaktifkan Warm Buffer Pool. Nilai valid: 0 hingga 2^64-1. Default: 0 (dinonaktifkan).
innodb_buf_shm_base_addrIntegerGlobalOffset dasar alamat memori virtual untuk kolam buffer bersama. Nilai valid: 0x300000000000 hingga 2^64-1. Default: 0x567800000000.
innodb_buf_page_desc_free_list_sizeIntegerGlobalJumlah halaman yang dicadangkan untuk deskriptor halaman terkompresi. Nilai valid: 8–128. Default: 16.
innodb_buf_free_zip_pagesIntegerGlobalCara menangani halaman terkompresi saat restart. Nilai valid: 1 (melepaskan halaman terkompresi saat node restart akibat exception), 2 (memaksa melepaskan halaman terkompresi selama restart). Default: 1.
innodb_buffer_pool_parallel_scan_threadsIntegerGlobalJumlah thread untuk pemindaian kolam buffer paralel. Nilai valid: 0–512. Default: 4.
innodb_buf_shm_huge_pageBoolGlobalApakah akan menggunakan halaman besar saat mengalokasikan memori bersama. Nilai valid: ON, OFF. Default: ON.
innodb_fast_shutdownIntegerGlobalMode shutdown InnoDB. Nilai valid: 0, 1, 2, 3. Nilai 3 bersifat spesifik untuk PolarDB: perilaku sama seperti 2 tetapi tanpa melakukan rollback transaksi yang belum dikomit. Default: 1.

Nilai Status

Kueri status saat ini dari Warm Buffer Pool:

SHOW GLOBAL STATUS LIKE 'innodb_shared_buffer_pool_status';
NilaiMakna
Using process private memoryWarm Buffer Pool dinonaktifkan. Node menggunakan memori privat proses standar.
Allocate from shared memoryWarm Buffer Pool aktif. Kolam buffer dialokasikan di memori bersama.
Attach to clean shutdown shared memoryNode menyambungkan ke kolam buffer yang dimatikan secara bersih. Akselerasi restart penuh diterapkan.
Attach to abnormal shutdown shared memoryNode menyambungkan ke kolam buffer yang bertahan setelah crash. PolarDB telah memperbaiki ketidakkonsistenan apa pun.

mysqlshm

mysqlshm adalah tool command-line untuk mengelola kolam buffer memori bersama. Gunakan tool ini untuk memeriksa atau melepaskan kolam buffer tanpa harus merestart database.

Usage: mysqlshm -k key [options]
   -h, Display this help and exit.
   -k, The shared memory key  [REQUIRED]
   -i, Prinf the basic info of shared memory
   -f, Free the shared memory