Hızlı bir VPN neden senkron SQL onaylamasını yine de yavaşlatır
Onaylama binadan senkron bir kopyaya çıkar. Bekleme türünden gönderme ve redo kuyruklarına kadar ilerleyin, sonra asenkron olanın doğru takas olup olmadığına karar verin.
Birincil üzerinde bir sorgu oturumu açın ve basit bir yazmanın neyi beklediğine bakın. Veritabanı senkron onaylamalı bir kullanılabilirlik grubuna aitse ve ikincil bağlıysa, bu beklemenin bir kısmı binadan çıkar: günlük kayıtları kopyaya gider, orada sertleştirilir ve bu sertleştirmenin haberi onaylama bitmeden geri gelir. Bant genişliği bu gidiş dönüşü kısaltmaz. Aşağıdaki anlatım, onayı ekrandan uzak diske ve geri dönüşe kadar izler.
Birincildeki bekleme türünden başlayın
Uzak kopyada bekleyen bir yazma, CPU ya da kilit beklemesi değil günlükle ilgili bir bekleme olarak görünür ve işlemin süresi satır sayısını değil gidiş dönüşü izler. Birçok küçük onaylama bunu belirginleştirir, çünkü her biri yolu ayrı ayrı öder. Tek bir toplu işlem aynı maliyeti tek ve daha uzun bir onaylamanın içinde saklar.
Bağlantı hakkında herhangi bir sonuca varmadan önce iş yükünüzü onaylama sıklığına göre sıralayın.
Ağı okumadan önce kopyanın durumunu okuyun. Önemli sayaçlar gönderme kuyruğu, redo kuyruğu ve eşitleme durumudur ve bunlar birlikte ikincilin yetişip yetişmediğini gösterir. Büyüyen gönderme kuyruğu aktarımı işaret ederken büyüyen redo kuyruğu ikincilin kendi işini ya da depolamasını işaret eder. Bunlar farklı onarımlardır ve hiçbiri bant genişliği eklemekle iyileşmez.
Onayı ikincile kadar izleyin
Senkron onaylamada birincil, onaylamayı tamamlandı olarak bildirmeden önce ilgili günlüğün ikincilde sertleştirildiğine dair onayı bekler. Sertleştirilmiş, günlükte kalıcı demektir, veri sayfalarına yeniden oynatılmış değil. Bu ayrım tam da senkron bir ikincilin redo açısından geride kalırken sertleştirmeyi onaylamaya devam edebilmesini açıklar.
Yolu sırayla yürüyün ve bütünü değil her aşamayı ölçün. Günlük kayıtları aktarımdan geçer, ikincil bunları yazar ve boşaltır, onay aynı yoldan geri döner. Aktarım gecikmesi, ikincilin zamanlaması ve ikincilin günlük diski gecikmesi hepsi toplama girer ve yalnızca ilki ağ sahibine aittir. Günlük hacmi başka bir şeyle doygun bir ikincil, bağlantı boşta dururken her onaylamayı uzatabilir.
SELECT ag.name AS ag_name, drs.database_id, drs.synchronization_state_desc,
drs.log_send_queue_size, drs.redo_queue_size
FROM sys.dm_hadr_database_replica_states AS drs
JOIN sys.availability_groups AS ag ON ag.group_id = drs.group_id;O anlık görüntüyü sessiz bir öğleden sonra bir kez değil, temsili bir yazmadan önce ve sonra alın. Fark, onaylama beklerken hangi kuyruğun hareket ettiğini söyleyen şeydir.
Yolu ölçün, bağlantıyı değil
Bir aktarım hızı testi, kopyalarınız olmayan iki nokta arasındaki kapasiteyi, iş yükünüz olmayan bir yük altında ölçer. Ağ sahibinden gerçek kopya yolu boyunca, gerçek trafik akarken, her iki yönde gecikme ve kayıp isteyin. Burada kayıp kapasiteden daha önemlidir, çünkü kaybolan bir segment yeniden iletim gerektirir ve her onaylama tek bir onayı bekler. İndirme testinde mükemmel görünen bir bağlantı, konuşkan bir onaylama düzenine hâlâ uygun olmayabilir.
Ölçüm yaparken veritabanının aktarım güvenliğini ve erişim kontrollerini bozmayın. Bir yolu ölçmek asla onları atlamak için bir neden değildir.
Süreleri sezgiyle değil sayaçlarla ilişkilendirin. Gönderme kuyruğu boş kalır ve onaylama hâlâ beklerse gecikme onayda ya da ikincilin boşaltmasındadır. Gönderme kuyruğu istikrarlı biçimde büyürse kısıt aktarım ya da kapasitedir. Hangi gözlemin sonucu desteklediğini kaydedin, böylece sıradaki kişi tartışmayı değil ölçümü tekrarlayabilir.
Asenkron modun gerçekten değiştirdiği şey
Asenkron onaylama, ikincilin sertleştirme onayını beklemesini kaldırır; bu yüzden yazmalar hızlanır ve bu yüzden dayanıklılık konumunuz değişir. Birincil işlemi o uzak onay olmadan onaylar. İkincilin geride kalmasına izin verilir ve o geride kalma maruziyettir.
Birincil, günlük kullanılabilir bir yük devretme hedefine ulaşmadan kaybedilirse, hizmeti o kopyaya zorla taşımak, uygulamaya zaten onaylandığı bildirilen işlemleri çöpe atar.
Bu bir kurtarma noktası kararıdır ve veritabanı sahibine aittir, performans incelemesine değil. Önce tolere edilen veri kaybı penceresini belirleyin, onu karşılayan modu seçin, sonra o sınır içinde iyileştirin. Senkron korumayı sürdüren seçenekler arasında uygulamanın izin verdiği yerlerde kaçınılabilir onaylama gidiş dönüşlerini kaldırmak, ölçülen bir aktarım ya da depolama darboğazını düzeltmek ve onayın daha az mesafe kat etmesi için kopyayı taşımak vardır. Bunları başladığınız ve değişmeyen dayanıklılık gereksinimiyle tartın.