AliSQL mengoptimalkan fitur Binlog Parallel Flush selama fase commit log biner untuk meningkatkan performa penulisan. Jika Anda mengaktifkan fitur ini setelah optimasi, performa penulisan instance ApsaraDB RDS Anda akan meningkat secara signifikan.
Prasyarat
Instance RDS Anda harus menggunakan MySQL 8.0.
Instance RDS Anda harus menjalankan versi mesin minor 20230930 atau yang lebih baru.
CatatanUntuk memeriksa versi mesin minor dari instance RDS Anda, masuk ke konsol ApsaraDB RDS dan buka halaman Basic Information. Di bagian Configuration Information, periksa apakah tombol Upgrade Minor Engine Version tersedia. Jika tombol tersebut ada, klik untuk melihat dan memperbarui versi mesin minor instance RDS Anda. Jika tombol tidak tersedia, instance RDS Anda sudah menggunakan versi mesin minor terbaru. Untuk informasi lebih lanjut, lihat Perbarui versi mesin minor.
Parameter sync_binlog instance RDS Anda tidak boleh diatur ke 1.
Informasi latar belakang

Dalam MySQL, sistem menulis data ke log biner setiap kali transaksi dikomit. Penulisan dilakukan secara berurutan, satu transaksi setelah yang lain.
Proses penulisan membutuhkan waktu karena sistem harus mengurai semua event dalam cache log biner, memberikan nilai pada parameter Checksum dan log_pos, serta menghasilkan event pengenal transaksi global (GTID). Proses ini menjadi hambatan besar bagi performa penulisan instance RDS. Untuk mengatasi hambatan ini, AliSQL mengoptimalkan fitur Binlog Parallel Flush.
Rincian optimasi
Buffer log biner

AliSQL memperkenalkan buffer log biner untuk menerapkan optimasi. Setelah beberapa thread dialokasikan, sistem dapat menulis event log biner ke buffer log biner secara paralel. Kemudian, thread backend menulis data dari buffer log biner ke file log biner. Dengan cara ini, sistem dapat melakukan operasi yang biasanya diselesaikan secara berurutan, seperti pemberian nilai pada parameter Checksum dan log_pos serta pembuatan event GTID, secara paralel. Hal ini meningkatkan performa penulisan saat event ditulis ke file log biner.
Komit grup
Dalam MySQL, sistem menulis data ke file log biner dan file redo log dari berbagai grup transaksi selama komit transaksi. Ini membantu menggabungkan operasi I/O sebanyak mungkin dan meningkatkan performa. Setelah optimasi, konsep komit grup tetap dipertahankan. Gambar berikut menunjukkan fitur Binlog Parallel Flush dengan komit grup.

Setelah optimasi, sistem mengalokasikan GTID dan buffer log biner untuk setiap transaksi. Sistem kemudian menulis event log biner dari grup transaksi ke buffer log biner. Setelah file redo log disimpan dan thread backend menulis data dari buffer log biner ke file log biner, grup transaksi dapat dikomit.
Persistensi log biner
Setelah optimasi, file log biner dipersistensikan oleh thread backend secara berkala. Secara default, file log biner dipersistensikan sekali per detik.
Deskripsi parameter
loose_binlog_parallel_flush
Parameter ini menentukan apakah fitur Binlog Parallel Flush diaktifkan. Parameter ini adalah variabel sistem global dengan nilai valid: on dan off. Perubahan nilai parameter ini langsung berlaku tanpa perlu me-restart instance RDS Anda.
Efek optimasi
Lingkungan pengujian
Tabel berikut menjelaskan efek optimasi fitur pada instance ApsaraDB RDS for MySQL dengan spesifikasi berbeda.
Layanan | Versi | CPU dan memori | Jenis penyimpanan | Kapasitas penyimpanan |
ApsaraDB RDS for MySQL | MySQL 8.0 (versi mesin minor: 20230930) | 16 core, 32 GB | ESSD PL1 | 1.000 GB |
16 core, 32 GB | SSD | 1.000 GB | ||
64 core, 128 GB | ESSD PL1 | 1.000 GB | ||
64 core, 128 GB | SSD | 1.000 GB |
Konfigurasi parameter
Instance RDS dalam pengujian menggunakan template parameter kinerja tinggi. Dalam template tersebut, konfigurasi parameter terkait kinerja berikut digunakan: sync_binlog = 1000 dan innodB_flush_log_at_trx_commit = 2.
Skrip pengujian
Skrip oltp_update_non_index dari Sysbench digunakan untuk pengujian kinerja. Data pengujian mencakup 100 tabel, dengan masing-masing tabel berisi 100.000 baris.
Hasil pengujian
Gambar berikut menunjukkan hasil pengujian. Dibandingkan dengan Native MySQL Normal Flush, Binlog Parallel Flush meningkatkan performa penulisan instance RDS secara signifikan. Peningkatan maksimum dapat mencapai 10% hingga 30%.
