All Products
Search
Document Center

ApsaraDB RDS:Gunakan binlog cache free flush

Last Updated:Jul 16, 2026

Saat transaksi besar dikomit, ApsaraDB RDS for MySQL memegang write lock saat menyiram (flushing) event log biner dari cache sesi ke file log biner. Jika cache log biner membengkak hingga puluhan GB, lock ini memblokir semua permintaan tulis dan dapat menghabiskan sumber daya I/O, sehingga membuat instans tidak responsif.

Fitur binlog cache free flush menghilangkan bottleneck ini dengan mengonversi file temporary di cache log biner langsung menjadi file log biner saat komit, alih-alih membaca dan menulis ulang setiap event di bawah lock. Pendekatan ini memperpendek waktu komit transaksi besar, mengurangi konsumsi I/O, dan menjaga instans tetap responsif.

Prasyarat

Sebelum memulai, pastikan bahwa:

  • Instans RDS Anda menjalankan MySQL 8.0 atau MySQL 5.7.

  • Versi mesin minor adalah 20240731 atau lebih baru.

Untuk memeriksa versi mesin minor, masuk ke konsol ApsaraDB RDS dan buka halaman Basic Information. Pada bagian Configuration Information, periksa apakah tombol Upgrade Kernel Version ditampilkan. Jika tombol tersebut muncul, klik untuk melihat dan memperbarui versi mesin minor. Jika tidak ditampilkan, berarti Instans sudah menggunakan versi mesin minor terbaru. Untuk informasi selengkapnya, lihat Memperbarui versi mesin minor.

Aktifkan dan konfigurasikan fitur

Aktifkan fitur

Jalankan perintah berikut untuk mengaktifkan binlog cache free flush:

SET GLOBAL loose_binlog_cache_free_flush = on;

Perubahan berlaku segera. Anda tidak perlu melakukan restart instans.

Verifikasi fitur aktif

SHOW GLOBAL VARIABLES LIKE 'loose_binlog_cache_free_flush';

Atur ambang batas

Parameter loose_binlog_cache_free_flush_limit_size menetapkan ukuran minimum data log biner yang memicu konversi. Nilai default-nya adalah 256 MB, artinya hanya transaksi yang datanya melebihi 256 MB yang menggunakan jalur free-flush.

Untuk menerapkan optimasi pada transaksi yang lebih kecil, turunkan ambang batasnya:

SET GLOBAL loose_binlog_cache_free_flush_limit_size = <size-in-bytes>;

Nonaktifkan fitur

SET GLOBAL loose_binlog_cache_free_flush = off;

Parameter

Parameter Default Deskripsi
loose_binlog_cache_free_flush off Mengaktifkan atau menonaktifkan fitur. Variabel sistem global. Berlaku segera tanpa perlu restart instans. Nilai yang valid: on, off.
loose_binlog_cache_free_flush_limit_size 268435456 (256 MB) Ambang batas yang memicu konversi. Saat data log biner suatu transaksi melebihi nilai ini, file temporary di cache log biner akan dikonversi menjadi file log biner pada saat komit. Rentang nilai: 20971520–18446744073709551615 byte.

Cara kerja

Binary log cache

image

Setiap sesi memiliki cache log biner sendiri—kombinasi ruang memori (dibatasi oleh binlog_cache_size) dan file temporary di disk. Saat event transaksi melebihi batas memori, data tersebut dialihkan ke file temporary.

Pada saat komit, engine membaca setiap event dari cache, memperbarui posisi akhir dan checksum, lalu menuliskannya ke file log biner di bawah write lock. Lock ini memastikan event ditulis tanpa gangguan, tetapi memblokir transaksi lain selama seluruh proses flushing.

Dampak penulisan log biner transaksi besar

image

Ketika cache log biner suatu transaksi mencapai puluhan GB, proses flushing saat komit menyebabkan dua masalah:

  • Permintaan tulis diblokir: Kunci tulis dipegang selama seluruh proses flush, sehingga mencegah transaksi lain melakukan operasi tulis.

  • Sumber daya I/O habis: Penulisan sekuensial berukuran besar mengonsumsi sumber daya I/O dan dapat membuat instans tidak responsif.

Cara binlog cache free flush mengatasi masalah ini

image

AliSQL mengoptimalkan mekanisme caching log biner sehingga file temporary di cache dapat langsung dikonversi menjadi file log biner. Dua perubahan memungkinkan hal ini:

  • Ruang header yang dicadangkan: Saat event ditulis ke file temporary, ruang di awal file dicadangkan untuk header file log biner. Saat file temporary dikonversi menjadi file log biner, ruang yang dicadangkan tersebut diisi dengan header yang diperlukan—tidak diperlukan penulisan terpisah.

  • Posisi akhir yang telah dihitung sebelumnya: Setiap event menghitung posisi akhirnya berdasarkan ukuran ruang yang dicadangkan, sehingga posisi tersebut sudah benar setelah konversi.

Isi file log biner hasil konversi

image

Saat transaksi besar dikomit, ruang yang dicadangkan di awal file temporary diisi dengan data berikut sebelum dikonversi:

Data Deskripsi
File header Magic number 4-byte [0xFE 'bin'] yang mengidentifikasi file sebagai file log biner
Header events Event deskripsi format dan event pengenal transaksi global (GTID) sebelumnya
Empty event Event bertipe ignorable yang mengisi sisa ruang yang dicadangkan
GTID event GTID dari transaksi yang sedang dikomit, dihasilkan pada saat komit

Sisa file tetap mempertahankan event asli transaksi: query events, table map events, row-based events, dan XID events.

image

Perbedaan dengan file log biner biasa

File log biner hasil konversi berbeda dari file log biner biasa dalam dua hal:

  • Berisi empty event (tipe ignorable) yang menempati sisa ruang yang dicadangkan.

  • Checksum dinonaktifkan secara default.

Fitur binlog cache free flush tidak mengubah format file log biner. Replikasi dan alat pihak ketiga tidak terpengaruh.

Efek optimasi

image.png

Gambar tersebut membandingkan waktu komit transaksi besar pada instans yang menggunakan Enterprise SSD (ESSD) tingkat kinerja 1 (PL1) dan Premium Local SSD, dengan fitur diaktifkan dan dinonaktifkan. Mengaktifkan binlog cache free flush memperpendek waktu komit serta mengatasi habisnya sumber daya I/O dan durasi write-lock yang panjang.