全部产品
Search
文档中心

PolarDB:Pool Buffer Hangat

更新时间:Jul 02, 2025

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.

warmbp.jpg

  • 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.

    image.pngAnalisis 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.

  • Nilai valid: 0 hingga 264-1.

  • Nilai default: 0. Ini menunjukkan bahwa Warmer Buffer Pool dinonaktifkan.

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.

  • Nilai valid: 0x300000000000 hingga 264-1.

  • Nilai default: 0x567800000000.

innodb_buf_page_desc_free_list_size

Integer

Global

Jumlah halaman yang dicadangkan untuk menetapkan deskriptor untuk halaman terkompresi.

  • Nilai valid: 8 hingga 128.

  • Nilai default: 16.

innodb_buf_free_zip_pages

Integer

Global

Metode untuk menangani halaman terkompresi.

  • Nilai valid: 1 dan 2.

    • 1: lepaskan halaman terkompresi saat node di-restart karena pengecualian.

    • 2: paksa lepaskan halaman terkompresi selama restart.

  • Nilai default: 1.

innodb_buffer_pool_parallel_scan_threads

Integer

Global

Jumlah thread untuk pemindaian paralel.

  • Nilai valid: 0 hingga 512.

  • Nilai default: 4.

innodb_buf_shm_enormous_page

Bool

Global

Menentukan apakah akan mengaktifkan halaman besar saat sistem mengalokasikan memori bersama.

  • Nilai default: ON dan OFF.

  • Nilai default: ON.

innodb_fast_shutdown

Integer

Global

Mode shutdown InnoDB.

  • Nilai valid: 0, 1, 2, dan 3. Semakin besar nilainya, semakin singkat waktu yang dibutuhkan untuk shutdown. Nilai 3 ditambahkan oleh PolarDB untuk MySQL. Saat parameter diatur ke 3, proses shutdown sama seperti saat nilai 2 digunakan, tanpa rollback transaksi yang belum dikomit.

  • Nilai default: 1.

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 bersama

Prosedur

Restart manual

  1. 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.

  2. Atur parameter innodb_fast_shutdown ke 3.

  3. Restart node utama.

  4. Setelah restart, periksa parameter innodb_shared_buffer_pool_status. Nilainya harus Lampirkan ke memori bersama shutdown bersih.

Restart karena pengecualian

  1. Atur parameter inndb_buf_shm_key di my.cnf ke nilai bukan nol. Kemudian, mulai kluster PolarDB.

  2. Setelah kluster dimulai, periksa parameter innodb_shared_buffer_pool_status. Nilainya harus Alokasikan dari memori bersama.

  1. Hentikan proses mysqld untuk mensimulasikan crash node.

  2. Tunggu node untuk restart.

    Setelah node utama di-restart, periksa parameter innodb_shared_buffer_pool_status. Nilainya harus Lampirkan ke memori bersama shutdown abnormal.