Birincil-ikincil çoğaltmada varsayılan COMMIT_ORDER mekanizması paralel yeniden oynatmayı birincil RDS örneğinde işlemlerin paralel olarak işlenip işlenemeyeceğine göre belirler. Bu durum yeniden oynatma paralelliğini birincil örneğin eşzamanlılığıyla sınırlar. WRITESET işlem çakışmalarını satır düzeyinde algılayarak bu sınırı ortadan kaldırır ve birincil ile ikincil RDS örnekleri arasındaki çoğaltma gecikmesini azaltır.
WRITESET nasıl çalışır?
COMMIT_ORDER kullanıldığında iki işlem yalnızca birincil RDS örneğinde paralel olarak işlenebiliyorsa paralel olarak yeniden oynatılabilir.
WRITESET her işlemin değiştirdiği veri satırlarının diğer işlemler tarafından değiştirilen satırlarla çakışıp çakışmadığını denetler. Çakışma yoksa işlemler birincil RDS örneğinde nasıl işlendiğinden bağımsız olarak ikincil RDS örneğinde paralel olarak yeniden oynatılır.
Desteklenen sürümler
RDS örneği aşağıdaki MySQL sürümlerinden birini çalıştırmalıdır:
|
|
|
|
|
|
|
|
|
WRITESET'i etkinleştirin
Aşağıdaki üç parametreyi ayarlayın. Talimatlar için Örnek parametrelerini değiştirin konusuna bakın.
transaction_write_set_extraction = XXHASH64
binlog_transaction_dependency_tracking = WRITESET
binlog_transaction_dependency_history_size = 500000
binlog_transaction_dependency_history_size çakışma tespiti için bellekte saklanan maksimum veri satırı sayısını ayarlar. Daha yüksek bir değer daha fazla veri satırını izler ve paralelliği artırır.
Parametre bağımlılıkları
binlog_transaction_dependency_tracking ve transaction_write_set_extraction birbirini etkiler. Aşağıda listelenen geçerli kombinasyonları kullanın. Geçersiz kombinasyonlar engellenir.
|
|
|
|
|
|
|
|
|
Parametre başvurusu
binlog_transaction_dependency_tracking
İkili günlüklerde kaydedilen işlemlerin ikincil RDS örneğinde paralel olarak nasıl yeniden oynatılacağını belirler.
Çok iş parçacıklı paralel yeniden oynatma için replica_parallel_workers veya slave_parallel_workers değerinin 0'dan büyük olması gerekir.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
transaction_write_set_extraction
Veri satırının karma değerini hesaplamak için kullanılan karma algoritmasını belirtir. Karma değeri farklı işlemlerin aynı veri satırını değiştirip değiştirmediğini belirler.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
binlog_transaction_dependency_history_size
Çakışma tespiti için bellekte saklanacak maksimum veri satırı sayısını belirtir.
|
|
|
|
|
|
|
|
|
WRITESET ne zaman geçersiz hale gelir?
Bazı senaryolarda WRITESET işlem çakışma tespiti için COMMIT_ORDER moduna geri döner. Bu geri dönüş ikincil RDS örneğindeki paralel yeniden oynatma performansını düşürmez.
WRITESET şu durumlarda geçersiz hale gelir:
DDL işlemleri gerçekleştirildiğinde
Büyük işlemler işlendiğinde
Yabancı anahtar tabloları değiştirildiğinde
Birincil anahtarı olmayan tablolar bulunduğunda
İkincil ve salt okunur RDS örnekleriniz arasında çoğaltma gecikmesi varsa bu gecikmeyi azaltmak için WRITESET'i etkinleştirin.
Başvuru kaynakları
Parametre optimizasyonu önerileri almak için Parametre tanılama özelliğini kullanın.
-
MySQL resmi belgeleri: