Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure Data Factory'de SSIS Tümleştirme Çalışma Zamanı
Bu konu, yaygın performans sorunlarını önlemek için Integration Services paketlerini tasarlama hakkında öneriler sağlar. Bu konu, paketlerin performansını gidermek için kullanabileceğiniz özellikler ve araçlar hakkında da bilgi sağlar.
Veri Akışı yapılandırma
Veri Akışı görevini daha iyi performans için yapılandırmak için, görevin özelliklerini yapılandırabilir, arabellek boyutunu ayarlayabilir ve paketi paralel yürütme için yapılandırabilirsiniz.
Veri Akışı Görevinin Özelliklerini Yapılandırma
Note
Bu bölümde açıklanan özellikler, bir paketteki her Veri Akışı görev için ayrı olarak ayarlanmalıdır.
Veri Akışı görevinin aşağıdaki özelliklerini yapılandırabilirsiniz ve bunların tümü performansı etkiler:
Arabellek verilerinin geçici depolama konumlarını (BufferTempStoragePath özelliği) ve ikili büyük nesne (BLOB) verileri içeren sütunların geçici depolama konumlarını (BLOBTempStoragePath özelliği) belirtin. Varsayılan olarak, bu özellikler TEMP ve TMP ortam değişkenlerinin değerlerini içerir. Geçici dosyaları farklı veya daha hızlı bir sabit disk sürücüsüne yerleştirmek veya birden çok sürücüye yaymak için başka klasörler belirtmek isteyebilirsiniz. Dizin adlarını noktalı virgülle ayırarak birden çok dizin belirtebilirsiniz.
DefaultBufferSize özelliğini ayarlayarak ve DefaultBufferMaxRows özelliğini ayarlayarak, görevin kullandığı arabelleğin varsayılan boyutunu tanımlayın ve her arabellekteki en fazla satır sayısını tanımlayın. Varsayılan arabellek boyutunun DefaultBufferMaxRows özelliğinin değerinden otomatik olarak hesaplanıp hesaplanmadığını belirtmek için AutoAdjustBufferSize özelliğini ayarlayın. Varsayılan arabellek boyutu 10 megabayttır ve arabellek boyutu üst sınırı 2^31-1 bayttır. Varsayılan en fazla satır sayısı 10.000'dir.
EngineThreads özelliğini ayarlayarak görevin yürütme sırasında kullanabileceği iş parçacığı sayısını ayarlayın. Bu özellik, kullanılacak iş parçacığı sayısı hakkında veri akışı altyapısına bir öneri sağlar. Varsayılan değer 10'dur ve en düşük değer 3'tür. Ancak motor, bu özelliğin değerinden bağımsız olarak ihtiyaç duyduğundan daha fazla iş parçacığı kullanmaz. Motor, eşzamanlılık sorunlarını önlemek için gerekirse bu özellik için belirtilenden daha fazla iş parçacığı da kullanabilir.
Veri Akışı görevinin iyileştirilmiş modda çalışıp çalışmadığını belirtin (RunInOptimizedMode özelliği). İyileştirilmiş mod, kullanılmayan sütunları, çıkışları ve bileşenleri veri akışından kaldırarak performansı artırır.
Note
Aynı ada sahip runInOptimizedMode özelliği, Veri Akışı görevinin hata ayıklama sırasında en iyi duruma getirilmiş modda çalıştığını göstermek için SQL Server Veri Araçları (SSDT) içinde proje düzeyinde ayarlanabilir. Bu proje özelliği, tasarım zamanında Veri Akışı görevlerin RunInOptimizedMode özelliğini geçersiz kılar.
Arabelleklerin Boyutunu Ayarlama
Veri akışı altyapısı, tek bir veri satırının tahmini boyutunu hesaplayarak arabelleklerini boyutlandırma görevini başlatır. Ardından bir satırın tahmini boyutunu DefaultBufferMaxRows değeriyle çarparak arabellek boyutu için bir ön çalışma değeri elde eder.
AutoAdjustBufferSize True olarak ayarlanmışsa, Veri Akışı Altyapısı hesaplanan değeri arabellek boyutu olarak kullanır ve DefaultBufferSize’ın değeri yoksayılır.
AutoAdjustBufferSize false olarak ayarlanmışsa, veri akışı altyapısı arabellek boyutunu belirlemek için aşağıdaki kuralları kullanır.
Sonuç DefaultBufferSize değerinden fazlaysa, altyapı satır sayısını azaltır.
Sonuç, dahili olarak hesaplanan minimum arabellek boyutundan küçükse, motor satır sayısını artırır.
Sonuç, minimum arabellek boyutu ile DefaultBufferSize değeri arasında kalırsa, motor arabellek boyutunu tahmini satır boyutu ile DefaultBufferMaxRows değerinin çarpımına mümkün olduğunca yakın olacak şekilde ayarlar.
Veri akışı görevlerinizin performansını test etme işlemine başladığınızda DefaultBufferSize ve DefaultBufferMaxRows için varsayılan değerleri kullanın. Veri akışı görevinde günlüğe kaydı etkinleştirin ve her arabellekte kaç satır bulunduğunu görmek için BufferSizeTuning olayını seçin.
Arabelleklerin boyutunu ayarlamaya başlamadan önce, yapabileceğiniz en önemli iyileştirme, gereksiz sütunları kaldırarak ve veri türlerini uygun şekilde yapılandırarak her veri satırının boyutunu küçültmektir.
En uygun arabellek sayısını ve boyutunu belirlemek için, performansı ve BufferSizeTuning olayının bildirdiği bilgileri izleyerek DefaultBufferSize ve DefaultBufferMaxRows değerleriyle denemeler yapın.
Arabellek boyutunu, diskte sayfalama başlamaya başlayacak noktaya kadar artırmayın. Diske sayfalama, optimize edilmemiş bir arabellek boyutundan daha fazla performans kaybına neden olur. Sayfalama işleminin gerçekleşip gerçekleşmediğini belirlemek için, Microsoft Yönetim Konsolu (MMC) içindeki Performans ek bileşeninde "Biriktirilen arabellekler" performans sayacını izleyin.
Paketi Paralel Yürütme için Yapılandırma
Paralel yürütme, birden çok fiziksel veya mantıksal işlemciye sahip bilgisayarlarda performansı artırır. Paketteki farklı görevlerin paralel yürütülmesini desteklemek için Integration Services iki özellik kullanır: MaxConcurrentExecutables ve EngineThreads.
MaxConcurrentExecutables Özelliği
MaxConcurrentExecutables özelliği paketin kendisinin bir özelliğidir. Bu özellik, aynı anda kaç görev çalıştırabileceğini tanımlar. Varsayılan değer -1'dir, yani fiziksel veya mantıksal işlemci sayısı artı 2'dir.
Bu özelliğin nasıl çalıştığını anlamak için üç Veri Akışı görevi olan bir örnek paketi düşünün. MaxConcurrentExecutables değerini 3 olarak ayarlarsanız, üç Veri Akışı görevi de aynı anda çalıştırılabilir. Ancak, her Veri Akışı görevin 10 kaynak-hedef yürütme ağacı olduğunu varsayalım. MaxConcurrentExecutables değerinin 3 olarak ayarlanması, her Veri Akışı görevin içindeki yürütme ağaçlarının paralel çalışmasını sağlamaz.
EngineThreads Özelliği
EngineThreads özelliği, her Veri Akışı görevin bir özelliğidir. Bu özellik, veri akışı altyapısının paralel olarak oluşturabileceği ve çalıştırabileceği iş parçacığı sayısını tanımlar. EngineThreads özelliği hem veri akışı altyapısının kaynaklar için oluşturduğu kaynak iş parçacıklarına hem de altyapının dönüştürmeler ve hedefler için oluşturduğu çalışan iş parçacıklarına eşit şekilde uygulanır. Bu nedenle EngineThreads değerinin 10 olarak ayarlanması, altyapının on adede kadar kaynak iş parçacığı ve en fazla on çalışan iş parçacığı oluşturabileceği anlamına gelir.
Bu özelliğin nasıl çalıştığını anlamak için üç Veri Akışı görevi olan örnek paketi göz önünde bulundurun. Her Veri Akışı görevi, kaynaktan hedefe on yürütme ağacı içerir. Her Veri Akışı görevde EngineThreads değerini 10 olarak ayarlarsanız, 30 yürütme ağacının tümü aynı anda çalışabilir.
Note
İş parçacığı oluşturma konusu bu konunun kapsamı dışındadır. Ancak genel kural, kullanılabilir işlemci sayısından daha fazla iş parçacığını paralel olarak çalıştırmamaktır. kullanılabilir işlemci sayısından daha fazla iş parçacığı çalıştırmak, iş parçacıkları arasında sık sık bağlam geçişi olması nedeniyle performansı engelleyebilir.
Tek Tek Veri Akışı Bileşenlerini Yapılandırma
Daha iyi performans için tek tek veri akışı bileşenlerini yapılandırmak için izleyebileceğiniz bazı genel yönergeler vardır. Ayrıca her veri akışı bileşeni türü için belirli yönergeler de vardır: kaynak, dönüştürme ve hedef.
Genel Yönergeler
Veri akışı bileşeninden bağımsız olarak, performansı geliştirmek için izlemeniz gereken iki genel yönerge vardır: sorguları iyileştirme ve gereksiz dizelerden kaçınma.
Sorguları İyileştirme
Bir dizi veri akışı bileşeni, kaynaklardan veri ayıklarken veya başvuru tabloları oluşturmak için arama işlemlerinde sorgular kullanır. Varsayılan sorgu SELECT * FROM <tableName> söz dizimini kullanır. Bu sorgu türü, kaynak tablodaki tüm sütunları döndürür. Tüm sütunların tasarım zamanında kullanılabilir olması, herhangi bir sütunu arama, geçiş veya kaynak sütun olarak seçmeyi mümkün kılar. Ancak, kullanılacak sütunları seçtikten sonra sorguyu yalnızca seçili sütunları içerecek şekilde düzeltmeniz gerekir. Gereksiz sütunların kaldırılması, bir paketteki veri akışını daha verimli hale getirir çünkü daha az sütun daha küçük bir satır oluşturur. Daha küçük bir satır, bir arabelleğe daha fazla satır sığabileceği ve veri kümesindeki tüm satırları işlemek için ne kadar az çalışma olduğu anlamına gelir.
Sorgu oluşturmak için sorguyu yazabilir veya Sorgu Oluşturucusu'nu kullanabilirsiniz.
Note
SQL Server Veri Araçları'de (SSDT) bir paket çalıştırdığınızda, SSIS Tasarımcısı'nın İlerleme sekmesi uyarıları listeler. Bu uyarılar, bir kaynağın veri akışı için kullanılabilir hale getirdiği ancak daha sonra aşağı akış veri akışı bileşenleri tarafından kullanılmadığı veri sütunlarını tanımlamayı içerir. Bu sütunları otomatik olarak kaldırmak için RunInOptimizedMode özelliğini kullanabilirsiniz.
Gereksiz Sıralamayı Önleme
Sıralama doğal olarak yavaş bir işlemdir ve gereksiz sıralamayı önlemek paket veri akışının performansını artırabilir.
Bazen kaynak veriler bir aşağı akış bileşeni tarafından kullanılmadan önce zaten sıralanmıştır. Bu tür bir ön sıralama, SELECT sorgusu bir ORDER BY yan tümcesi kullandığında veya veriler kaynağa sıralı düzende eklendiğinde ortaya çıkabilir. Bu tür önceden sıralanmış kaynak veriler için, verilerin sıralandığına dair bir ipucu sağlayabilir ve böylece belirli aşağı akış dönüşümlerinin sıralama gereksinimlerini karşılamak için Sıralama dönüştürmesi kullanmaktan kaçınabilirsiniz. (Örneğin, Merge ve Merge Join dönüşümleri sıralı girdiler gerektirir.) Verilerin sıralı olduğunu belirtmek için aşağıdaki işlemleri yapmanız gerekir:
Yukarı akış veri akışı bileşeninin çıkışındaki IsSorted özelliğini True olarak ayarlayın.
Verilerin sıralandığı sıralama anahtarı sütunlarını belirtin.
Daha fazla bilgi için bkz. Birleştirme ve Birleştirme Birleştirmesi Dönüşümleri için Verileri Sıralama.
Veri akışındaki verileri sıralamanız gerekiyorsa, veri akışını olabildiğince az sıralama işlemi kullanacak şekilde tasarlayarak performansı geliştirebilirsiniz. Örneğin, veri akışı veri kümesini kopyalamak için Çok Noktaya Yayın dönüşümünü kullanır. Çok Noktaya Yayın dönüşümü çalıştırılmadan önce, dönüştürmeden sonra birden çok çıktıyı sıralamak yerine veri kümesini bir kez sıralayın.
Daha fazla bilgi için bkz: Sıralama Dönüşümü, Birleştirme Dönüşümü, Merge Join Dönüşümü ve Çoklu Yayın Dönüşümü.
Sources
OLE DB Kaynağı
Bir görünümden veri almak için BIR OLE DB kaynağı kullandığınızda, veri erişim modu olarak "SQL komutu"nu seçin ve bir SELECT deyimi girin. SELECT deyimi kullanarak verilere erişmek, veri erişim modu olarak "Tablo veya görünüm" seçmekten daha iyi performans gösterir.
Transformations
Toplama, Belirsiz Arama, Belirsiz Gruplandırma, Arama, Merge Join ve Yavaş Değişen Boyut dönüşümlerinin performansını artırmak için bu bölümdeki önerileri kullanın.
Toplu Dönüştürme
Toplama dönüşümü Keys, KeysScale, CountDistinctKeys ve CountDistinctScale özelliklerini içerir. Bu özellikler, dönüştürmenin dönüştürmenin önbelleğe aldığı veriler için gereken bellek miktarını önceden ayırmasını sağlayarak performansı geliştirir. Group by işleminden oluşması beklenen grup sayısını tam veya yaklaşık olarak biliyorsanız, sırasıyla Keys ve KeysScale özelliklerini ayarlayın. Distinct count işleminden kaynaklanacağı beklenen benzersiz değerlerin tam veya yaklaşık sayısını biliyorsanız, sırasıyla CountDistinctKeys ve CountDistinctScale özelliklerini ayarlayın.
Bir veri akışında birden çok toplama oluşturmanız gerekiyorsa, birden çok dönüştürme oluşturmak yerine tek bir Toplama dönüşümü kullanan birden çok toplama oluşturmayı göz önünde bulundurun. Bu yaklaşım, bir toplama başka bir toplamanın alt kümesi olduğunda performansı artırır çünkü dönüştürme iç depolamayı iyileştirebilir ve gelen verileri yalnızca bir kez tarayabilir. Örneğin, bir toplamada GROUP BY yan tümcesi ve AVG toplaması kullanılıyorsa bunları tek bir dönüştürmede birleştirmek performansı geliştirebilir. Ancak, bir Toplama dönüştürmesi içinde birden çok toplama gerçekleştirmek toplama işlemlerini seri hale getirir ve bu nedenle birden çok toplamanın bağımsız olarak hesaplanması gerektiğinde performansı iyileştirmeyebilir.
Bulanık Arama ve Bulanık Gruplandırma Dönüşümleri
Benzer Arama ve Benzer Gruplandırma dönüşümlerinin performansını iyileştirme hakkında bilgi için SQL Server Integration Services 2005'te Belirsiz Arama ve Benzer Gruplandırma teknik incelemesine bakın.
Arama Dönüşümü
Yalnızca ihtiyacınız olan sütunları arayabilen bir SELECT deyimi girerek bellekteki başvuru verilerinin boyutunu en aza indirin. Bu seçenek, büyük miktarda gereksiz veri döndüren bir tablonun veya görünümün tamamını seçmekten daha iyi performans gösterir.
Birleştirme Eklem Dönüşümü
Artık MaxBuffersPerInput özelliğinin değerini yapılandırmanız gerekmez çünkü Microsoft Birleştirme Birleştirme dönüştürmesinin aşırı bellek kullanma riskini azaltan değişiklikler yapmıştır. Bu sorun bazen Birleştirme Bağlama'nın birden çok girişi, eşit olmayan oranlarda veri ürettiğinde meydana gelir.
Yavaş Değişen Boyut Dönüşümü
Yavaş Değişen Boyut Sihirbazı ve Yavaş Değişen Boyut dönüşümü, çoğu kullanıcının ihtiyaçlarını karşılayan genel amaçlı araçlardır. Ancak, sihirbazın oluşturduğu veri akışı performans için iyileştirilmemiştir.
Genellikle, Yavaş Değişen Boyut dönüşümündeki en yavaş bileşenler, her seferinde tek bir satır üzerinde güncelleme işlemleri gerçekleştiren OLE DB Command dönüşümleridir. Bu nedenle, Yavaş Değişen Boyut dönüşümünün performansını geliştirmenin en etkili yolu OLE DB Komutu dönüşümlerini değiştirmektir. Bu dönüştürmeleri, güncellenecek tüm satırları bir ara tabloya kaydeden hedef bileşenlerle değiştirebilirsiniz. Ardından, tüm satırlara aynı anda uygulanan tek bir küme tabanlı Transact-SQL UPDATE işlemi gerçekleştirecek bir SQL Yürütme görevi ekleyebilirsiniz.
Gelişmiş kullanıcılar, büyük boyutlar için iyileştirilmiş, yavaş değişen boyut işleme için özel bir veri akışı tasarlayabilir. Bu yaklaşımın bir tartışması ve örneği için teknik incelemedeki "Benzersiz boyut senaryosu" bölümüne bakın Project REAL: İş Zekası ETL Tasarım Uygulamaları.
Destinations
Hedeflerle daha iyi performans elde etmek için SQL Server hedef kullanmayı ve hedefin performansını test etmeyi göz önünde bulundurun.
SQL Server Hedefi
Bir paket aynı bilgisayardaki bir SQL Server örneğine veri yüklediğinde, SQL Server hedefini kullanın. Bu hedef, yüksek hızlı toplu yükleme işlemleri için optimize edilmiştir.
Hedeflerin Performansını Test Etme
Verileri hedeflere kaydetmenin beklenenden daha uzun sürdüğünü fark edebilirsiniz. Yavaşlığın, hedefin verileri yeterince hızlı bir şekilde işleyememesinden kaynaklanıp kaynaklanmadığını belirlemek için, hedefi geçici olarak Satır Sayısı dönüştürmesiyle değiştirebilirsiniz. Aktarım hızı önemli ölçüde artarsa, büyük olasılıkla verileri yükleyen hedef yavaşlamanın nedenidir.
İlerleme Sekmesindeki Bilgileri gözden geçirin
SSIS Tasarımcısı, SQL Server Veri Araçları (SSDT) içinde bir paket çalıştırdığınızda hem denetim akışı hem de veri akışı hakkında bilgi sağlar. İlerleme durumu sekmesi görevleri ve kapsayıcıları yürütme sırasına göre listeler ve paketin kendisi de dahil olmak üzere her görev ve kapsayıcı için başlangıç ve bitiş zamanlarını, uyarıları ve hata iletilerini içerir. Ayrıca veri akışı bileşenlerini yürütme sırasına göre listeler ve ilerleme durumu, tamamlanma yüzdesi ve işlenen satır sayısı olarak görüntülenen bilgiler içerir.
İlerleme Durumu sekmesinde iletilerin görüntülenmesini etkinleştirmek veya devre dışı bırakmak için SSISmenüsündeki İlerleme Raporlama hatalarını ayıkla seçeneğini değiştirin. İlerleme durumu raporlamasını devre dışı bırakmak, SQL Server Veri Araçları'nda karmaşık bir paket çalıştırırken performansın geliştirilmesine yardımcı olabilir.
İlgili Görevler
İlgili İçerik
Makaleler ve Blog Gönderileri
Teknik makale, SQL Server 2005 Integration Services: A Strategy for Performance, technet.microsoft.com'da
Technet.microsoft.com hakkında Teknik makale, Integration Services: Performans Ayarlama Teknikleri
SQLCAT'in BI ve Analiz Kılavuzu'ndaZaman Uyumlu Dönüşümleri Birden Çok Görevlere Bölerek İşlem Hatlarının Aktarım Hızını Artırma başlıklı teknik makale
Teknik makale, Veri Yükleme Performans Kılavuzu, msdn.microsoft.com'da.
Teknik makale, SSIS ile 30 Dakikada 1 TB Yükledik ve Msdn.microsoft.com'da So Can You.
sqlcat.com'da SQL Server Integration Services için En İyi 10 Uygulama başlıklı teknik makale.
Teknik makale ve örnek, SSIS için "Dengeli Veri Dağıtımcısı", sqlcat.com'da.
blogs.msdn.com'da SSIS Paketi Performans Sorunlarını Giderme blog gönderisi
Videolar
Video serisi, Kuruluştaki SSIS paketlerinizin Performansı için Tasarlama ve Ayarlama (SQL Video Serisi)
Video, Kurumsal Ortamda SSIS Paketinizin Veri Akışına İnce Ayar Yapma (SQL Server Videosu), technet.microsoft.com'da
Video, SSIS Veri Akışı Arabelleklerini Anlama (SQL Server Video), technet.microsoft.com
Sunum, Microsoft BT’nin SQL Server 2008 SSIS Veri Akışı Altyapısı Geliştirmelerinden Nasıl Yararlandığı, sqlcat.com'da.
video, Dengeli Veri Dağıtımcısı, technet.microsoft.com.
Ayrıca Bkz.
Paket Geliştirme için Sorun Giderme Araçları
Paket Yürütme için Sorun Giderme Araçları