Untuk meningkatkan kinerja, AliSQL menyertakan optimasi Binlog Parallel Flush pada tahap commit log biner. Mengaktifkan optimasi ini dapat secara signifikan meningkatkan kinerja tulis instans Anda.
Prasyarat
Instans menjalankan salah satu versi database berikut:
MySQL 8.4
MySQL 8.0 dengan versi mesin minor 20230930 atau lebih baru.
CatatanPada halaman Basic Information, cari tombol Upgrade Minor Engine Version di bagian Configuration Information. Jika tombol tersebut terlihat, Anda dapat mengkliknya untuk melihat versi saat ini. Jika tidak, instans Anda sudah menggunakan versi terbaru. Untuk informasi selengkapnya, lihat Upgrade Minor Engine Version.
Parameter
sync_binloguntuk instans tidak diatur ke 1.
Latar Belakang

Di MySQL, setiap transaksi harus menulis ke log biner selama tahap commit. Proses ini bersifat serial: sebuah transaksi hanya dapat menulis ke log biner setelah transaksi sebelumnya selesai, seperti yang ditunjukkan pada gambar di atas.
Proses ini juga memakan waktu. Sebelum menulis ke log biner, semua event yang disimpan dalam cache log biner harus diurai, checksum dan posisi log harus diisi, serta event GTID harus dibuat. Baru setelah itu event-event tersebut dapat ditulis ke file log biner. Proses serial dan memakan waktu ini menciptakan bottleneck signifikan bagi kinerja tulis instans. Untuk mengatasi bottleneck tersebut, AliSQL menyertakan optimasi Binlog Parallel Flush.
Rincian Optimasi
Buffer log biner

AliSQL meningkatkan logika standar dengan memperkenalkan buffer log biner. Setelah alokasi posisi selesai, beberapa thread dapat menulis event log biner ke buffer log biner secara paralel. Sebuah thread backend kemudian menulis isi buffer log biner ke file log biner. Desain ini memungkinkan langkah-langkah yang sebelumnya serial—seperti penguraian, pengisian nilai checksum dan posisi log, serta pembuatan event GTID—dieksekusi secara paralel. Hal ini secara signifikan mengurangi bottleneck kinerja saat menulis log biner selama commit transaksi.
Commit grup paralel
Di MySQL, transaksi menulis ke log biner dan redo log dalam kelompok selama tahap commit. Teknik ini, yang dikenal sebagai group commit, menggabungkan operasi I/O untuk meningkatkan kinerja. Optimasi ini mempertahankan konsep group commit dan mengintegrasikannya dengan fitur Binlog Parallel Flush, seperti yang diilustrasikan pada gambar berikut.

Dengan optimasi Binlog Parallel Flush, setiap transaksi secara serial mengalokasikan GTID dan ruang di buffer log biner. Selanjutnya, beberapa kelompok dapat menulis ke buffer log biner secara paralel. Setelah redo log dipersistensikan dan thread backend selesai menulis ke log biner, sistem melakukan commit seluruh kelompok transaksi tersebut.
Persistensi log biner
Dengan optimasi Binlog Parallel Flush, sebuah thread backend secara berkala mempersistensikan file log biner. Secara default, hal ini terjadi sekali per detik.
Parameter
loose_binlog_parallel_flush
Variabel sistem global ini mengaktifkan atau menonaktifkan fitur Binlog Parallel Flush. Nilai yang valid: on atau off. Perubahan pada parameter ini berlaku langsung tanpa memerlukan restart instans.
Dampak Kinerja
Lingkungan Pengujian
Pengujian membandingkan kinerja pada empat spesifikasi instans ApsaraDB RDS for MySQL yang berbeda, sebagaimana dirinci dalam tabel berikut.
Produk | Versi | vCPU dan memori | Jenis penyimpanan | Ukuran penyimpanan |
ApsaraDB RDS for MySQL | 8.0 (versi mesin minor 20230930) | 16 vCPU 32 GB | ESSD PL1 | 1000 GB |
16 vCPU 32 GB | SSD | 1000 GB | ||
64 vCPU 128 GB | ESSD PL1 | 1000 GB | ||
64 vCPU 128 GB | SSD | 1000 GB |
Pengaturan parameter
Instans pengujian menggunakan template parameter berkinerja-tinggi dengan dua parameter terkait kinerja diatur ke sync_binlog = 1000 dan innodB_flush_log_at_trx_commit = 2.
Skrip pengujian
Pengujian kinerja menggunakan skrip oltp_update_non_index dari SysBench. Set data uji terdiri dari 100 tabel, masing-masing berisi 100.000 baris.
Hasil pengujian
Hasil pengujian ditampilkan pada gambar berikut. Di bawah beban kerja konkurensi tinggi, fitur Binlog Parallel Flush memberikan peningkatan kinerja signifikan dibandingkan implementasi MySQL standar. Peningkatan kinerja puncak berkisar antara 10% hingga 30%.
