全部产品
Search
文档中心

ApsaraDB RDS:Modifikasi parameter terkait WRITESET

更新时间:Jul 06, 2025

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.

Catatan

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 = XXHASH64

  • binlog_transaction_dependency_tracking = WRITESET

  • binlog_transaction_dependency_history_size = 500000

Catatan

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

Peringatan

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

COMMIT_ORDER

OFF atau XXHASH64

WRITESET atau WRITESET_SESSION

XXHASH64

Deskripsi parameter

Penting

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_tracking menentukan 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_workers atau slave_parallel_workers.

    • Nilai Default: WRITESET

    • Nilai 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 nilai SESSION yang sama diputar ulang secara serial pada instance RDS sekunder. Transaksi dengan nilai SESSION yang berbeda diputar ulang berdasarkan aturan WRITESET.

  • transaction_write_set_extraction:

    • Deskripsi: Parameter ini menentukan algoritma hash yang digunakan oleh WRITESET untuk menghitung nilai hash dari baris data. Jika WRITESET diaktifkan, 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: XXHASH64

    • Nilai Valid dan Artinya:

      • OFF: Tidak menghitung nilai hash dari baris data. Pastikan bahwa WRITESET dinonaktifkan.

      • XXHASH64: Menghitung nilai hash dari baris data menggunakan algoritma hash 64-bit.

Referensi