Birleştirme Çoğaltma makalesi işleme sırasını anlama

Bu makalede, birleştirme Çoğaltma makalesi işleme sırasının nasıl anlaşılması anlat srilmektedir.

Özgün ürün sürümü: SQL Server
Özgün KB numarası: 307356

Özet

Birleştirme Aracısı, eşitleme işlemi sırasında birleştirme işleminin makalelere değişiklik uygulama sırasını yöneten belirli bir kural kümesini izler.

Bu makalede makale işleme sırasının neden önemli olduğu açıklanır.

Daha fazla bilgi

Makale işleme sırasının önemli olmasının başlıca iki nedeni vardır:

  • Çoğu durumda, Birleştirme Aracısı en iyi performansı elde etmek için bildirim temelli Bilgi Tutarlılığı (DRI) kısıtlamalarına katılan makalelere yapılan değişiklikleri işlemelidir. Değilse, Birleştirme Aracısı'nın yanlış sırada denediği Veri İşleme Dili (DML) işlemlerini yeniden denemesi gerekebilir (yani, üst öğesinin önüne bir alt satır eklemeyi deneyin).

  • Bilgi tutarlılığını korumak için tetikleyiciler kullanan uygulamalar, Birleştirme Aracısı'nın değişiklikleri belirli bir sırada göndermesini gerektirir. Birleştirme Aracısı değişiklikleri yanlış sırada gönderirse, tetikleyici büyük olasılıkla değişikliği geri alır ve değişiklik çoğaltma topolojisine yayılmaz.

Not

Birleştirme Aracısı, BIR iş ortağı çoğaltmasına SQL DML değişiklik işlemleri uyguladığında FOREIGN KEY kısıtlaması değerlendirmesini ve kullanıcı tetikleyici yürütmesini atlayabilir. Bunun gerçekleşmesi için, FOREIGN KEY kısıtlaması ve kullanıcı tetikleyicisi veya her ikisi de ÇOĞALTMA İçİn OLMADI seçeneğiyle oluşturulmuş olmalıdır. Her iki durumda da birleştirme işlemi, SQL Server nesne üzerinde kullanıcı tarafından başlatılan özgün değişikliği yürütürken iş mantığını başarıyla değerlendirdiğini ve verileri iş ortağı çoğaltmasına çoğalttığında bu koşulları yeniden değerlendirmesi gerekmediğini varsayar. ÇOĞALTMA İÇİN KULLANILMADI özelliğini bu şekilde kullanmanın birincil avantajı, performansın artmasıdır. ÇOĞALTMA İçİn DEĞIL seçeneği ve uygun şekilde nasıl kullanılacağı hakkında daha fazla bilgi için, SQL Server 2000 Books Online'daki ÇOĞALTMA İçİn DEĞIL seçeneği konusuna bakın.

Daha önce listelenen iki nedenden dolayı, Birleştirme Aracısı'nın iş ortağı çoğaltmasında değişiklik teslim etme sırası önemlidir.

Makale işleme sırası tartışmasına başlamadan önce, iki temel kavramı anlamak önemlidir. İki temel kavram şunlardır:

  • Makale takma adı.

  • Bir nesil.

burada iki kavramın açıklaması yer alır.

  • Makale Takma Adları

    Takma ad, Birleştirme Aracısı'nın çoğaltmayı birleştirmek için bir makaleyi (SQL Server tablosu) tanımlamak için kullandığı bir tamsayı değeridir. Birleştirme kurulum işlemi, makaleyi bir birleştirme yayınına eklerken bir makale takma adı atar. Bir makale DRI kısıtlamalarına katılırsa, birleştirme kurulumu işlemi tanımlı DRI kısıtlamalarını yansıtan bir makale takma adı oluşturmaya çalışır. Birleştirme işlemi, YABANCı ANAHTAR kısıtlaması (üst) tarafından başvurulan tablolara başvuran tablodan (alt tablo veya YABANCı ANAHTAR kısıtlamasının tanımlandığı tablo) daha küçük bir makale takma adı atar.

    Bir tablo DRI kısıtlamalarına katılmazsa, birleştirme kurulumu işlemi makalenin yayına ekleme sırasını (artan sırada) temel alarak makale takma adını atar.

  • Nesil

Oluşturma, Birleştirme Aracısı'nın belirli bir makaledeki mantıksal bir değişiklik grubunu izlemek için kullandığı bir tamsayı değeridir. Birleştirme eşitlemeleri arasında belirli bir çoğaltmadaki belirli bir makalede yapılan değişikliklerin tümü aynı nesille ilişkilendirilir. Birleştirme Aracısı her çalıştığında, mevcut açık nesli kapatır ve ardından bir sonraki değişiklik kümesinin ilişkilendirildiği yeni bir nesil açar.

INSERT'leri, UPDAT'ları ve DELET'leri işleme

Birleştirme Aracısı, belirli bir yayının makalelerini iki ayrı gruba ayırır:

  • Birleştirme Aracısı, herhangi bir birleştirme filtresi ilişkisine dahil olmayan ve DRI aracılığıyla birleştirme filtrelerinde yer alan makalelerle ilgili olmayan makaleleri tek bir gruba yerleştirir.

  • Birleştirme Aracısı, birleştirme filtresi ilişkilerinde açıkça yer alan makaleleri ve DRI aracılığıyla filtre makalelerini birleştirmeyle ilgili makaleleri ikinci bir ayrı gruba yerleştirir.

Birleştirme Aracısı yayına tanımlanan her makaleyi önceki gruplardan yalnızca birine ekler.

Birleştirme Aracısı, yayında tanımlanan tüm makalelerin , ve DELETEs genel işlem sırasını INSERTsUPDATEsbelirlemek için grupları kullanır.

İlgili iki grubun her birinde Birleştirme Aracısı INSERTsUPDATEs , artan makale takma ad sırasını işler ve azalan makale takma ad sırasına göre işler DELETEs . İlk olarak, Birleştirme Aracısı tümünü DELETEs belirli bir grupta, ardından UPDATEs ve INSERTs (aynı zamanda belirli bir grupta) işler. Kavramsal olarak, Birleştirme Aracısı yukarıda belirtilen iki grubu daha önce listelenen sırayla birbirine ekler (birleştirilmemiş). Birleştirme Aracısı ilk grup için işlemeye DELETEs başlar ve ardından işlemeyi ikinci gruba genişletir DELETE ve iki grubun kalan değişiklikleri paralel olarak işlenir. Birleştirme Aracısı her ilgili grupta makale işleme sırasını korusa da, Birleştirme Aracısı ilgili iki grup genelinde katı makale işleme sırasını korumaz. Bu nedenle, veya INSERTUPDATEdurumunda, daha yüksek bir makale takma adı olan ilk gruptan yapılan değişiklikler, daha düşük bir takma adla ikinci gruptan gelenlerin önüne gelebilir. Tersi durum bir DELETEiçin de oluşabilir. Bu davranışların her ikisi de tasarım gereğidir.

Oluşturma toplu işleminin makale işleme sırası üzerindeki olası etkileri

Daha önce belirtildiği gibi, bir nesille, UPDATEs eşitleme oturumları arasında belirli bir çoğaltmada belirli bir makale için gerçekleşen değişiklikleri (INSERTsve DELETEs) mantıksal olarak gruplandırabilirsiniz. Sonuç olarak Birleştirme Aracısı, iki çoğaltma arasında hangi değişikliklerin değişmesi gerektiğini belirlediğinde nesillerle birlikte çalışır. Birleştirme Aracısı, eşitleme işleminin aşağıdaki noktalarında ortak bir nesil anlaşması yapar:

  • Aboneden yayımcıya değişiklikleri yüklemeden önce.

  • Yayımcıdan aboneye yapılan değişiklikleri indirmeden önce.

Birleştirme Aracısı, birleştirme eşitlemesinin karşıya yükleme ve indirme aşamaları sırasında bir iş ortağı çoğaltmasına gönderilecek nesilleri numaralandırırken başlangıç noktası olarak bu ortak nesli kullanır.

Birleştirme Aracısı nesilleri, oluşturma toplu işlemleri olarak da adlandırılan toplu işler. Varsayılan olarak, Birleştirme Aracısı'nın aboneden yayımcıya yüklediği veya yayımcıdan aboneye indirdiği her nesil toplu işlemde 100 nesil bulunur. Oluşturma toplu iş boyutu, ve -DownloadGenerationsPerBatch Birleştirme Aracısı parametreleri veya -UploadGenerationsPerBatch Birleştirme Aracısı profili aracılığıyla yapılandırılabilir. Varsayılan durumda, bir yayımcı (veya yeniden yayımcı) ile abone arasında değiştirmeniz gereken 100'den fazla nesil varsa (indirme ve karşıya yükleme veya her ikisini birden), Birleştirme Aracısı birden çok nesil toplu işlemi gerçekleştirir. Toplu işlemlerin sayısı, Birleştirme Aracısı'nın değiştirmesi gereken nesil sayısına ve belirli bir birleştirme oturumu için toplu iş ayarlarına göre nesillere bağlıdır.

Birden çok oluşturma toplu işleminin değiştirildiği bir durumda, Birleştirme Aracısı ilgili üst ve alt değişiklikleri iki ayrı nesil toplu iş arasında bölebilir. Böyle bir durum söz konusuysa, Birleştirme Aracısı ilişkili üst değişikliği içeren oluşturma toplu işleminden önce bir nesil toplu işleminde bir alt değişiklik sunabilir. Yeniden yayımcıları kullanan hiyerarşik birleştirme topolojilerinde, üst ve alt değişikliklerin nesil toplu işlerine bölünmesinin yakınsanmaya yol açabileceği nadir bir durum vardır. Yakınsama dışı durum hakkında daha fazla bilgi için aşağıdaki makaleye bakın:

SQL Server alt ve üst nesilleri ayrı nesil toplu işlemlerde işlerken yakınsama değil.

Üst ve alt değişikliklerin nesil toplu işlerine bölünmesini önlemek için daha önce açıklanan ve -DownloadGenerationsPerBatch parametrelerini artırabilirsiniz-UploadGenerationsPerBatch.

Makale işleme sırası, daha önce açıklanan kurallar uyarınca belirli bir nesil toplu işlemde tutulur. Ancak Birleştirme Aracısı, oluşturma toplu işlemleri arasında makale işleme sırasını koruyamaz.