Genel Çoğaltma Performansını Geliştirme

Şunlar için geçerlidir: SQL Server Azure SQL Yönetilen Örneği

Bu konuda açıklanan yönergeleri kullanarak uygulamanızdaki ve ağınızdaki tüm çoğaltma türlerinin genel performansını geliştirebilirsiniz.

Sunucu ve Ağ

  • Microsoft SQL Server Database Engine ayrılmış en düşük ve en yüksek bellek miktarını ayarlayın.

    Varsayılan olarak, Database Engine kullanılabilir sistem kaynaklarına göre bellek gereksinimlerini dinamik olarak değiştirir. Çoğaltma etkinlikleri sırasında düşük bellek kullanılabilirliğini önlemek için, kullanılabilir en düşük belleği ayarlamak için en düşük sunucu belleği seçeneğini kullanın. İşletim sistemi sayfasının bellek için diske sahip olmasını önlemek için, maksimum sunucu belleği seçeneğiyle en fazla bellek miktarını da ayarlayabilirsiniz. Daha fazla bilgi için bkz. Sunucu Bellek Sunucusu Yapılandırma Seçenekleri.

  • Veritabanı veri dosyalarının ve günlük dosyalarının düzgün bir şekilde ayrılmasını sağlayın. Çoğaltmaya katılan tüm veritabanları için işlem günlüğü için ayrı bir disk sürücüsü kullanın.

    Günlük dosyalarını veritabanını depolamak için kullanılandan farklı bir disk sürücüsünde depolayarak işlem yazma süresini azaltabilirsiniz. Hata toleransı gerekiyorsa, o sürücüyü RAID-1 (Bağımsız Disklerin Yedekli Dizisi) kullanarak yansıtabilirsiniz. Diğer veritabanı dosyaları için RAID 0 veya 0+1 kullanın (hataya dayanıklılık ihtiyacınıza bağlı olarak). Bu, çoğaltmanın kullanılıp kullanılmadığına bakılmaksızın iyi bir uygulamadır.

  • Çoğaltmada kullanılan sunuculara, özellikle dağıtımcıya bellek eklemeyi göz önünde bulundurun.

  • Çok işlemcili bilgisayarları kullanın.

    Çoğaltma aracıları, sunucudaki ek işlemcilerden yararlanabilir. Yüksek CPU kullanımıyla çalışıyorsanız daha hızlı bir CPU veya birden çok CPU yüklemeyi göz önünde bulundurun.

  • Hızlı bir ağ kullanın.

    Ağ, özellikle işlemsel çoğaltma için önemli bir performans darboğazı olabilir. Değişikliklerin Abonelere yayılması, saniyede 100 megabit (Mb/sn) veya daha hızlı bir ağ kullanılarak önemli ölçüde geliştirilebilir. Ağ yavaşsa uygun ağ ayarlarını ve aracı parametrelerini belirtin.

Veritabanı Tasarımı

  • Veritabanı tasarımı için en iyi yöntemleri izleyin.

    Çoğaltılan veritabanı genellikle çoğaltılmamış veritabanıyla aynı performans iyileştirmelerinden yararlanır. Ancak, dizinler Abone'de dikkatli bir şekilde kullanılmalıdır: Abonedeki birincil anahtar sütunu dizine alınmalıdır, ancak ek dizinler ekleme, güncelleştirme ve silme performansını etkileyebilir.

  • READ_COMMITTED_SNAPSHOT veritabanı seçeneğini ayarlamayı göz önünde bulundurun.

    Kullanıcı etkinliği ile çoğaltma aracısı etkinliği arasındaki çekişmelerin azaltılmasına yardımcı olmak için yayın ve abonelik veritabanları için şu seçeneği ayarlayın:

    ALTER DATABASE AdventureWorks  
    SET READ_COMMITTED_SNAPSHOT ON  
    

    Daha fazla bilgi için bkz ALTER DATABASE . (Transact-SQL).

  • Tetikleyicilerde uygulama mantığı konusunda dikkatli olun.

    Abonede kullanıcı tanımlı tetikleyicilerdeki iş mantığı, değişiklikleri Aboneye çoğaltmayı yavaşlatabilir:

    Birleştirme çoğaltması için yayımlanan tablolarda başvuru bütünlüğünü korumak amacıyla tetikleyiciler kullanıyorsanız, Merge Agent için gereken yeniden deneme sayısını azaltmak üzere tabloların işleme sırasını belirtin. Daha fazla bilgi için bkz. Birleştirme çoğaltma seçeneklerini belirtme.

  • Büyük Nesne (LOB) veri türlerinin kullanımını sınırlayın.

    LOB'ler, diğer sütun veri türlerinden daha fazla depolama alanı ve işleme gerektirir. Uygulamanız için gerekli olmadıkça bu sütunları makalelere eklemeyin. Metin, ntext ve görüntü veri türleri kullanım dışıdır. LOB'ları dahil ediyorsanız, sırasıyla varchar(max), nvarchar(max), varbinary(max)veri türlerini kullanmanızı öneririz.

    İşlemsel çoğaltma için Distribution Profile for OLEDB streaming adlı Dağıtım Aracısı profilini kullanmayı değerlendirin. Daha fazla bilgi için bkz . Çoğaltma Aracısı Profilleri.

Yayın Tasarımı

  • Yalnızca gerekli verileri yayımlayın.

    Çoğaltmanın ayarlanması kolay olduğundan, aslında gerekli olandan daha fazla veri yayımlama eğilimi vardır. Bu, dağıtım veritabanları ve anlık görüntü dosyalarındaki ek kaynakları tüketebilir ve gerekli veriler için aktarım hızını düşürebilir. Gereksiz tabloları yayımlamaktan kaçının ve yayınları daha az sıklıkta güncelleştirmeyi göz önünde bulundurun.

  • Yayın tasarımı ve uygulama davranışı aracılığıyla çakışmaları en aza indirin.

    Aşağıdaki çoğaltma türleri, abonelerde verilerin değiştirilmesine olanak tanır: birleştirme çoğaltması, güncelleştirilebilir aboneliklere sahip işlem çoğaltması ve eşler arası işlem çoğaltması. Güncelleştirilebilir aboneliklere sahip birleştirme çoğaltması ve işlem çoğaltması, belirli bir satır eşitlemeler arasında birden fazla düğümde güncelleştirilirse veri çakışmalarını destekler. Eşler arası çoğaltma veri çakışmalarını desteklemez; veri değişiklikleri bölümlenmelidir. Kullanılan çoğaltma türü ne olursa olsun, mümkün olduğunda değişiklikleri bölümlemenizi öneririz, çünkü bu durum çakışma algılama ve çözümleme için gereken işlemeyi azaltır.

    Değişiklikler, verilerin alt kümelerini her aboneye yayımlayarak veya belirli bir satır için belirli bir düğüme doğrudan uygulama değişiklikleri yapılarak bölümlenebilir:

    • Birleştirme çoğaltması, tek bir yayında parametreli filtreler kullanarak veri alt kümelerini yayımlamayı destekler. Daha fazla bilgi için bkz. Parametreli Satır Filtreleri.

    • İşlemsel çoğaltma, birden çok yayında statik filtreler kullanarak verilerin alt kümelerini yayımlamayı destekler. Daha fazla bilgi için bkz . Yayımlanan Verileri Filtreleme.

  • Satır filtrelerini rastgele kullanın.

    bir işlem yayını satır filtreleri kullanan bir veya daha fazla makale içerdiğinde, Günlük Okuyucu Aracısı işlem günlüğünü tararken tabloya yapılan bir güncelleştirmeden etkilenen her satıra filtreyi uygulamalıdır. Bu nedenle, Günlük Okuyucu Aracısı'nın aktarım hızı etkilenir.

    Benzer şekilde, hangi Abonelerin bu satırları alması gerektiğini belirlemek için, birleştirme çoğaltması değiştirilen veya silinen satırları değerlendirmelidir. Abonede gereken verileri azaltmak için satır filtreleri kullanıldığında, bu işlem daha karmaşıktır ve tablodaki tüm satırları yayımladığınızdan daha yavaş olabilir. Her abonede azaltılmış depolama gereksinimleri ile en yüksek aktarım hızına ulaşma ihtiyacı arasındaki dengeyi dikkatle göz önünde bulundurun. Filtreleme hakkında daha fazla bilgi için bkz. Yayımlanan Verileri Filtreleme.

Abonelikle İlgili Dikkat Edilmesi Gerekenler

  • Çok sayıda Abone olduğunda çekme aboneliklerini kullanın.

    Dağıtım Aracısı ve Birleştirme Aracısı, anında iletme abonelikleri için Dağıtımcı'da, çekme abonelikleri için ise Abonelerde çalışır. Çekme aboneliklerinin kullanılması, aracı işlemeyi Dağıtımcıdan Abonelere taşıyarak performansı artırabilir. Daha fazla bilgi için Yayınlara Abone Ol.

  • Ağ gecikme süresi daha yüksek olan uzak Aboneler için çekme aboneliklerini kullanmayı göz önünde bulundurun.

    • Bir gönderim aboneliğinde Distribution Agent Dağıtımcı üzerinde çalışır ve verileri okumak ve yazmak için iki arabellek kullanır. Her iki arabellek de dolduktan sonra, Agent daha fazla veri göndermeden önce bir ağ gidiş-dönüş onayı beklemek zorundadır; bu da gecikme arttıkça uzayabilen bir boşta kalma süresine neden olur.

    • Çekmeli abonelikte, Distribution Agent abonede çalışır; bu nedenle yazma işlemleri yerel olarak gerçekleştirilir ve arabellekler hızla serbest bırakılır. Bu işlem, gecikme süresi yüksek olduğunda önemli ölçüde daha iyi aktarım hızıyla Dağıtım veritabanından sürekli okuma yapılmasını sağlar.

  • Aboneler çok gerideyse aboneliği yeniden başlatmayı göz önünde bulundurun.

    Abonelere büyük miktarda değişiklik gönderilmesi gerektiğinde, bunları yeni bir anlık görüntüyle yeniden başlatma işlemi, tek tek değişiklikleri taşımak için çoğaltma kullanmaktan daha hızlı olabilir. Daha fazla bilgi için bkz. Abonelikleri Yeniden Başlatma.

    İşlem çoğaltması için Çoğaltma İzleyicisi Dağıtılmamış Komutlar sekmesinde şu bilgilerle ilgili bilgileri görüntüler: dağıtım veritabanında henüz aboneye dağıtılmamış olan işlem sayısı; ve bu işlemlerin dağıtılması için tahmini süre. Daha fazla bilgi için bkz. Çoğaltma İzleyicisikullanarak bilgileri görüntüleme ve görevleri gerçekleştirme.

Anlık Görüntüyle İlgili Dikkat Edilmesi Gerekenler

  • Snapshot Agent yalnızca gerektiğinde ve yoğun olmayan zamanlarda çalıştırın.

    Snapshot Agent, verileri Publisher üzerindeki yayımlanmış tablodan Distributor'daki anlık görüntü klasöründeki bir dosyaya toplu kopyalar. Anlık görüntü oluşturmak kaynak açısından yoğun bir işlem olabilir; bu nedenle bunun yoğunluğun düşük olduğu saatlerde zamanlanması en uygunudur.

  • Karakter modu anlık görüntüsü gerekmiyorsa, yerel mod anlık görüntüsü kullanın.

    Karakter modu anlık görüntüsü gerektiren SQL Server dışındaki aboneler ve SQL Server Compact çalıştıran aboneler hariç tüm aboneler için varsayılan yerel mod anlık görüntüsünü kullanın.

  • Yayın için tek bir anlık görüntü klasörü kullanın.

    Anlık görüntü konumuyla ilgili yayın özelliklerini belirtirken, varsayılan anlık görüntü klasörüne, alternatif bir anlık görüntü klasörüne veya her ikisine de anlık görüntü dosyaları oluşturmayı seçebilirsiniz. Her iki konumda da anlık görüntü dosyaları oluşturmak için ek disk alanı ve Snapshot Agent çalıştırıldığında daha fazla işlem gerekir.

  • Anlık görüntü klasörünü, veritabanı veya günlük dosyalarını depolamak için kullanılmayan, Dağıtımcı’ya yerel bir sürücüye yerleştirin.

    Snapshot Agent anlık görüntü klasörüne sıralı bir veri yazma işlemi gerçekleştirir. Anlık görüntü klasörünü herhangi bir veritabanından veya günlük dosyasından ayrı bir sürücüye yerleştirmek diskler arasındaki çekişmeyi azaltır ve anlık görüntü işleminin daha hızlı tamamlanmasına yardımcı olur.

  • Abone'de abonelik veritabanını oluştururken, basit veya toplu günlüğe kaydedilen bir kurtarma modeli belirtmeyi göz önünde bulundurun. Bu, anlık görüntü Abone üzerinde uygulanırken gerçekleştirilen toplu ekleme işlemlerinin asgari düzeyde günlüğe kaydedilmesini sağlar. Anlık görüntü abonelik veritabanına uygulandıktan sonra gerekirse farklı bir kurtarma modeline geçiş yapabilirsiniz (çoğaltılan veritabanları kurtarma modellerinden herhangi birini kullanabilir). Kurtarma modeli seçme hakkında daha fazla bilgi için bkz. Geri Yükleme ve Kurtarma'ya Genel Bakış (SQL Server).

  • Düşük bant genişliğine sahip ağlar için çıkarılabilir medyada alternatif anlık görüntü klasörünü ve sıkıştırılmış anlık görüntüleri kullanmayı göz önünde bulundurun.

    Alternatif anlık görüntü klasöründe anlık görüntü dosyalarının sıkıştırılması, anlık görüntü disk depolama gereksinimlerini azaltabilir ve çıkarılabilir medyada anlık görüntü dosyalarının aktarılmasını kolaylaştırabilir.

    Sıkıştırılmış anlık görüntüler, bazı durumlarda anlık görüntü dosyalarını ağ üzerinden aktarma performansını artırabilir. Ancak anlık görüntünün sıkıştırılması, anlık görüntü dosyalarını oluştururken Snapshot Agent ve anlık görüntü dosyalarını uygularken Distribution Agent veya Merge Agent tarafından ek işleme gerektirir. Bu, anlık görüntü oluşturmayı yavaşlatabilir ve bazı durumlarda anlık görüntü uygulamak için gereken süreyi artırabilir. Ayrıca, bir ağ hatası oluşursa sıkıştırılmış anlık görüntüler sürdürülemez; bu nedenle güvenilir olmayan ağlar için uygun değildir. Bir ağ üzerinde sıkıştırılmış anlık görüntüler kullanırken bu avantajları dikkatli bir şekilde göz önünde bulundurun. Daha fazla bilgi için bkz. Anlık görüntü seçeneklerini değiştirme.

  • Aboneliği el ile başlatmayı göz önünde bulundurun.

    Büyük ilk veri kümelerini içerenler gibi bazı senaryolarda, anlık görüntü dışında bir yöntem kullanarak bir abonelik başlatmak tercih edilir. Daha fazla bilgi için bkz. Anlık Görüntü Olmadan İşlemsel Abonelik Başlatma.

Ajan Parametreleri

  • İlk test, izleme veya hata ayıklama dışında çoğaltma aracılarının ayrıntı düzeyini azaltın.

    Dağıtım Aracılarının veya Birleştirme Aracılarının –HistoryVerboseLevel parametresini ve –OutputVerboseLevel parametresini azaltın. Bu, aracı geçmişini ve çıkışını izlemek için eklenen yeni satır sayısını azaltır. Bunun yerine, aynı duruma sahip önceki geçmiş iletileri yeni geçmiş bilgilerine güncelleştirilir. Aracı etkinliği hakkında mümkün olduğunca fazla bilgi edinebilmeniz için test, izleme ve hata ayıklama için ayrıntılı düzeyleri artırın.

  • Snapshot Agent, Merge Agent ve Distribution Agent –MaxBCPThreads parametresini kullanın (belirtilen iş parçacığı sayısı bilgisayardaki işlemci sayısını aşmamalıdır). Bu parametre, anlık görüntü oluşturulduğunda ve uygulandığında paralel olarak gerçekleştirilebilecek toplu kopyalama işlemlerinin sayısını belirtir.

  • Distribution Agent ve Merge Agent –UseInprocLoader parametresini kullanın (yayımlanan tablolarda XML sütunları varsa bu parametre kullanılamaz). Bu parametre, anlık görüntü uygulandığında aracının BULK INSERT komutunu kullanmasına neden olur.

Aracı parametreleri aracı profillerinde ve komut satırında belirtilebilir. Daha fazla bilgi için bakınız: