全部产品
Search
文档中心

PolarDB:Aktifkan penulisan binlog yang dioptimalkan untuk transaksi besar

更新时间:Jul 03, 2025

PolarDB for MySQL dapat mengoptimalkan penulisan log biner (binlog) untuk transaksi besar. Optimasi ini membantu mencegah transaksi lain tertunda atau terblokir oleh transaksi besar. Topik ini menjelaskan cara menggunakan fitur penulisan binlog yang dioptimalkan untuk transaksi besar serta batasan penggunaannya.

Latar Belakang

Setelah binary logging diaktifkan, data binlog dari sebuah transaksi ditulis ke dalam file binlog saat transaksi tersebut dikomit. Gambar berikut menunjukkan prosesnya. Saat sebuah transaksi dijalankan, binlog yang dihasilkan disimpan sementara di dalam cache binlog transaksi tersebut. Jika beberapa transaksi dikomit pada saat yang sama, transaksi-transaksi tersebut antre untuk menulis data binlog mereka dari cache binlog ke file binlog. Jika salah satu transaksi, seperti Trx2, memiliki ukuran binlog yang besar, misalnya 1 GB, transaksi tersebut membutuhkan waktu lebih lama untuk menulis data binlog ke file binlog. Akibatnya, transaksi lain dalam antrean dipaksa menunggu, menyebabkan penundaan dalam penulisan binlog dan komit transaksi mereka. Latensi ini dapat membuat sistem sementara tidak dapat ditulis dan menyebabkan masalah seperti lonjakan kueri SQL lambat. Akibatnya, aplikasi mungkin berulang kali mencoba operasi yang gagal, yang menyebabkan lonjakan koneksi baru dan semakin meningkatkan beban sistem.

Untuk mengatasi masalah ini, PolarDB for MySQL menyediakan fitur penulisan binlog yang dioptimalkan untuk transaksi besar. Setelah Anda mengaktifkan fitur ini, proses penulisan binlog dari transaksi besar tidak lagi menghambat proses komit transaksi lain. Optimasi ini mencegah ketidaktersediaan penulisan sementara di sistem, yang jika tidak dicegah dapat menyebabkan masalah seperti lonjakan permintaan penulisan SQL lambat atau peningkatan cepat jumlah koneksi.

Versi yang Didukung

Kluster PolarDB for MySQL Anda harus merupakan Edisi Enterprise atau Edisi Standar dan menjalankan versi mesin database berikut:

  • PolarDB for MySQL 8.0.1 dengan versi revisi 8.0.1.1.42 atau yang lebih baru.

  • PolarDB for MySQL 8.0.2 dengan versi revisi 8.0.2.2.25 atau yang lebih baru.

Catatan

Untuk informasi tentang cara memeriksa versi kluster Anda, lihat bagian "Query an engine version" dari topik Versi Mesin 5.6, 5.7, dan 8.0.

Batasan

Setelah Anda mengaktifkan penulisan binlog yang dioptimalkan untuk transaksi besar, binlog yang dihasilkan oleh transaksi besar ditulis ke dalam file binlog khusus. Gambar berikut menunjukkan bahwa header dari file binlog khusus tersebut berisi event seperti FORMAT DESCRIPTION EVENT dan PREVIOUS GTIDS LOG EVENT. Sebuah event placeholder khusus bernama IGNORABLE LOG EVENT juga termasuk dalam header. Sistem downstream secara otomatis mengabaikan IGNORABLE LOG EVENT.

Berikut adalah batasan yang berlaku karena struktur khusus file binlog:

  • Node replikasi downstream tidak dapat menggunakan replikasi multi-threaded berbasis konkurensi database tetapi dapat menggunakan replikasi multi-threaded berbasis konkurensi jam logis. Anda tidak boleh menentukan slave_parallel_workers>0 dan slave_parallel_type='DATABASE' secara bersamaan. Namun, Anda dapat menentukan slave_parallel_workers> 0 dan slave_parallel_type= 'logical_clock' secara bersamaan.

  • Anda tidak dapat menggunakan checksum untuk file binlog transaksi besar.

Penggunaan

Atur parameter loose_enable_large_trx_optimization ke ON untuk mengaktifkan penulisan binlog yang dioptimalkan untuk transaksi besar. Gunakan parameter loose_binlog_large_trx_threshold_up untuk menentukan ambang ukuran binlog yang memicu penulisan binlog yang dioptimalkan untuk transaksi besar.

Catatan

Untuk informasi tentang cara mengonfigurasi parameter, lihat Konfigurasi Parameter Kluster dan Node.

Tabel berikut menjelaskan parameter-parameter tersebut.

Parameter

Level

Deskripsi

loose_enable_large_trx_optimization

Global

Menentukan apakah akan mengaktifkan atau menonaktifkan penulisan binlog yang dioptimalkan untuk transaksi besar. Nilai valid:

  • OFF (default)

  • ON

Parameter ini langsung berlaku tanpa perlu me-restart kluster.

loose_binlog_large_trx_threshold_up

Global

Ambang ukuran binlog yang memicu penulisan binlog yang dioptimalkan untuk transaksi besar. Setelah penulisan binlog yang dioptimalkan untuk transaksi besar diaktifkan, penulisan binlog yang dioptimalkan dipicu ketika ukuran binlog yang dihasilkan oleh sebuah transaksi melebihi ambang tersebut.

  • Nilai default: 1 GB.

  • Nilai valid: 10 MB hingga 300 GB.

Parameter ini langsung berlaku tanpa perlu me-restart kluster.

Perbandingan Kinerja

Gambar berikut menunjukkan perbedaan antara waktu yang diperlukan untuk kluster yang menggunakan tipe penyimpanan PSL5 untuk mengcommit transaksi besar sebelum dan sesudah penulisan binlog yang dioptimalkan untuk transaksi besar diaktifkan.

image

Gambar tersebut menunjukkan pengurangan signifikan dalam waktu yang diperlukan untuk mengcommit transaksi besar setelah penulisan binlog yang dioptimalkan untuk transaksi besar diaktifkan. Akibatnya, masalah seperti beban I/O berat dan kunci tulis yang berkepanjangan yang disebabkan oleh commit transaksi besar dihilangkan.