Anda dapat mengaktifkan WRITESET dan menggunakan parameter binlog_transaction_dependency_tracking serta transaction_write_set_extraction untuk mengelola mekanisme deteksi konflik transaksi pada instance ApsaraDB RDS for MySQL. Hal ini meningkatkan pemutaran paralel pada instance RDS sekunder dan mengurangi latensi antara instance RDS utama dan sekunder.
Pengenalan WRITESET
Dalam MySQL, COMMIT_ORDER adalah mekanisme default untuk mengidentifikasi konflik antar transaksi dalam replikasi utama-sekunder. Namun, COMMIT_ORDER rentan terhadap pengaturan paralelisme pada instance RDS utama. WRITESET diperkenalkan untuk mengatasi masalah ini. Saat melakukan commit transaksi dengan WRITESET diaktifkan, sistem memeriksa apakah baris data yang dimodifikasi oleh transaksi tersebut bertentangan dengan baris data dari transaksi lain. Jika tidak ada konflik, transaksi dapat diputar ulang secara paralel pada instance RDS sekunder, sehingga meningkatkan pemutaran paralel.
Prasyarat untuk mengaktifkan WRITESET
Instance RDS harus menjalankan salah satu versi mesin database berikut:
MySQL 5.7 dengan versi mesin minor 20211231 atau lebih baru.
MySQL 8.0 dengan versi mesin minor 20210930 atau lebih baru.
Dalam skenario tertentu seperti operasi DDL, transaksi besar, modifikasi tabel kunci asing, atau tabel tanpa kunci primer, WRITESET menjadi tidak valid. Dalam kasus ini, sistem akan menggunakan COMMIT_ORDER untuk mendeteksi konflik transaksi. COMMIT_ORDER tidak memperburuk pemutaran paralel pada instance RDS sekunder. Namun, jika terjadi latensi replikasi antara instance RDS sekunder dan baca-saja, kami menyarankan untuk mengaktifkan WRITESET.
Pengaturan parameter untuk mengaktifkan WRITESET
Untuk mengaktifkan WRITESET, konfigurasikan parameter berikut. Untuk informasi lebih lanjut, lihat Modifikasi Parameter Instance.
transaction_write_set_extraction = XXHASH64binlog_transaction_dependency_tracking = WRITESETbinlog_transaction_dependency_history_size = 500000
binlog_transaction_dependency_history_size menentukan jumlah maksimum baris data yang disimpan dalam memori untuk deteksi konflik. Nilai yang lebih besar menunjukkan jumlah baris data yang lebih banyak dan tingkat paralelisme yang lebih tinggi.
Aturan pengaturan parameter
binlog_transaction_dependency_tracking dan transaction_write_set_extraction saling mempengaruhi. Pastikan Anda mengonfigurasi parameter sesuai dengan pemetaan dalam tabel berikut. Jika tidak, pengaturan akan diblokir.
binlog_transaction_dependency_tracking | transaction_write_set_extraction |
|
|
|
|
Deskripsi parameter
binlog_transaction_dependency_tracking dan transaction_write_set_extraction didukung untuk versi mesin minor berikut:
Jika instance RDS Anda menjalankan MySQL 5.7, rentang valid versi mesin minor adalah [20211231, 99999999).
Jika instance RDS Anda menjalankan MySQL 8.0, rentang valid versi mesin minor adalah [20210930, 99999999).
binlog_transaction_dependency_tracking:Deskripsi:
binlog_transaction_dependency_trackingmenentukan metode untuk mengidentifikasi konflik dan dependensi antar transaksi dalam pemutaran paralel multi-thread. Ini memungkinkan transaksi dalam log biner untuk diputar ulang secara paralel pada instance RDS sekunder. Dalam pemutaran paralel multi-thread, salah satu parameter berikut harus lebih besar dari 0:replica_parallel_workersatauslave_parallel_workers.Nilai Default:
WRITESETNilai Valid dan Artinya:
COMMIT_ORDER: Dependensi antar transaksi ditentukan berdasarkan urutan transaksi dalam replikasi utama-sekunder. Jika dua transaksi dapat dilakukan secara paralel pada instance RDS utama, mereka tidak bertentangan dan dapat diputar ulang secara paralel pada instance RDS sekunder. Mode ini rentan terhadap pengaturan paralelisme pada instance RDS utama.WRITESET: Dependensi antar transaksi ditentukan pada tingkat baris. Jika dua transaksi tidak memodifikasi baris data yang sama dari tabel yang memiliki kunci primer atau kunci unik, transaksi tersebut dapat diputar ulang secara paralel pada instance RDS sekunder. Mode ini tidak terpengaruh oleh pengaturan paralelisme pada instance RDS utama.WRITESET_SESSION: Transaksi dengan nilaiSESSIONyang sama diputar ulang secara serial pada instance RDS sekunder. Transaksi dengan nilaiSESSIONyang berbeda diputar ulang berdasarkan aturanWRITESET.
transaction_write_set_extraction:Deskripsi: Parameter ini menentukan algoritma hash yang digunakan oleh
WRITESETuntuk menghitung nilai hash dari baris data. JikaWRITESETdiaktifkan, nilai hash dari baris data yang dihitung menggunakan algoritma yang ditentukan digunakan untuk memeriksa apakah baris data yang sama dimodifikasi oleh transaksi yang berbeda.Nilai Default:
XXHASH64Nilai Valid dan Artinya:
OFF: Tidak menghitung nilai hash dari baris data. Pastikan bahwaWRITESETdinonaktifkan.XXHASH64: Menghitung nilai hash dari baris data menggunakan algoritmahash64-bit.
Referensi
Gunakan fitur diagnostik parameter untuk mendapatkan solusi optimasi parameter. Untuk informasi lebih lanjut, lihat Gunakan Fitur Diagnostik Parameter.
Dokumentasi Resmi MySQL: