Aracılığıyla paylaş


Azure Stream Analytics’ten Azure SQL Veritabanı aktarım hızı performansını artırma

Bu makalede, Azure Stream Analytics kullanarak verileri Azure SQL Veritabanına yüklerken daha iyi yazma aktarım hızı performansı elde etmeye yönelik ipuçları açıklanır.

Azure Stream Analytics'teki SQL çıkışı, paralel yazma seçeneğini destekler. Bu seçenek, birden çok çıkış bölümünün hedef tabloya paralel olarak yazıldığı tam paralel iş topolojilerine olanak tanır. Azure Stream Analytics'te bu seçeneğin etkinleştirilmesi, veritabanı yapılandırmanıza ve tablo şemanıza önemli ölçüde bağlı olduğundan daha yüksek aktarım hızı elde etmek için yeterli olmayabilir. Dizinlerin, kümeleme anahtarının, dizin doldurma faktörünün ve sıkıştırmanın seçimi tabloları yükleme süresini etkiler. İç karşılaştırmalara göre sorgu ve yük performansını geliştirmek için veritabanınızı iyileştirme hakkında daha fazla bilgi için bkz. performans kılavuzu SQL Veritabanı. SQL Veritabanı paralel yazarken yazmaların sıralanması garanti değildir.

Her hizmette çözümünüzün genel aktarım hızını geliştirmeye yardımcı olabilecek bazı yapılandırmalar aşağıdadır.

Azure Stream Analytics

  • Bölümleyi Devral – Bu SQL çıkış yapılandırması seçeneği, önceki sorgu adımınızın veya girişinizin bölümleme düzenini devralmayı sağlar. Bu etkinleştirildiğinde, disk tabanlı bir tabloya yazma ve işiniz için tam paralel topolojiye sahip olma, daha iyi aktarım hızı görmeyi bekler. Bu bölümleme diğer birçok çıkış için zaten otomatik olarak gerçekleşir. Tablo kilitleme (TABLOCK) bu seçenekle yapılan toplu eklemeler için de devre dışı bırakılır.

    Not

    8'den fazla giriş bölümü olduğunda, giriş bölümleme düzenini devralma uygun bir seçim olmayabilir. Bu üst sınır, tek bir kimlik sütunu ve kümelenmiş dizin içeren bir tabloda gözlemlendi. Bu durumda, çıkış yazıcılarının sayısını açıkça belirtmek için sorgunuzda INTO 8 kullanmayı göz önünde bulundurun. Şemanıza ve dizin seçiminize bağlı olarak gözlemleriniz farklılık gösterebilir.

  • Toplu İş Boyutu - SQL çıkış yapılandırması, hedef tablonuzun/iş yükünüzün yapısına göre Bir Azure Stream Analytics SQL çıkışında en büyük toplu iş boyutunu belirtmenize olanak tanır. Toplu iş boyutu, her toplu ekleme işlemiyle gönderilen en fazla kayıt sayısıdır. Kümelenmiş columnstore dizinlerinde, 100.000 civarındaki toplu iş boyutları daha fazla paralelleştirme, minimum günlük kaydı ve kilitleme iyileştirmelerine olanak sağlar. Disk tabanlı tablolarda, daha yüksek toplu iş boyutları toplu eklemeler sırasında kilit yükseltmeyi tetikleyebileceği için çözümünüz için en uygun değer 10K (varsayılan) veya daha düşük olabilir.

  • Giriş İletisi Ayarlama – Bölümleme ve toplu iş boyutunu devralarak iyileştirdiyseniz, bölüm başına ileti başına giriş olaylarının sayısını artırmak yazma aktarım hızınızı artırmaya yardımcı olur. Giriş iletisi ayarı, Azure Stream Analytics içindeki toplu iş boyutlarının belirtilen Toplu İş Boyutuna kadar olmasını sağlayarak aktarım hızını artırır. Bu, EventHub veya Blob'da sıkıştırma kullanılarak veya giriş iletisi boyutları artırılarak elde edilebilir.

SQL Azure

  • Bölümlenmiş Tablo ve DizinlerBölüm anahtarınızla aynı sütuna (örneğin PartitionId) sahip tabloda bölümlenmiş sql tablosu ve bölümlenmiş dizinler kullanmak, yazma işlemleri sırasında bölümler arasındaki çekişmeleri önemli ölçüde azaltabilir. Bölümlenmiş tablo için BİRİnCİl dosya grubunda bir bölüm işlevi ve bölüm düzeni oluşturmanız gerekir. Bu, yeni veriler yüklenirken mevcut verilerin kullanılabilirliğini de artırır. Günlük GÇ sınırına, bölüm sayısına göre isabet edilebilir ve bu sınır SKU yükseltilerek artırılabilir.

  • Benzersiz anahtar ihlallerinden kaçının : Azure Stream Analytics Etkinlik Günlüğü'nde birden çok anahtar ihlali uyarı iletisi alırsanız, işinizin kurtarma olayları sırasında gerçekleşme olasılığı olan benzersiz kısıtlama ihlallerinden etkilenmediğinden emin olun. Dizinlerinizde IGNORE_DUP_KEY seçeneği ayarlanarak bu durum önlenebilir.

tabloları Azure Data Factory ve In-Memory

  • Geçici tablo olarak Bellek İçi TabloBellek içi tablolar çok hızlı veri yüklemelerine izin verir, ancak verilerin belleğe sığması gerekir. Karşılaştırmalar, bellek içi tablodan disk tabanlı bir tabloya toplu yüklemenin, kimlik sütunu ve kümelenmiş dizin içeren disk tabanlı tabloya tek bir yazıcı kullanarak doğrudan toplu eklemeden yaklaşık 10 kat daha hızlı olduğunu gösterir. Bu toplu ekleme performansından yararlanmak için, verileri bellek içi tablodan disk tabanlı tabloya kopyalayan Azure Data Factory kullanarak bir kopyalama işi ayarlayın.

Performans Tuzaklarını Önleme

Verileri aktarma, insert deyimini ayrıştırma, deyimi çalıştırma ve işlem kaydı verme gibi yinelenen ek yükten kaçınıldığından, verileri toplu ekleme işlemi tek eklemelerle yüklemekten çok daha hızlıdır. Bunun yerine, verilerin akışını yapmak için depolama altyapısına daha verimli bir yol kullanılır. Bu yolun kurulum maliyeti, disk tabanlı bir tablodaki tek bir insert deyiminden çok daha yüksektir. Çift kesme noktası genellikle yaklaşık 100 satırdır ve bunun ötesinde toplu yükleme neredeyse her zaman daha verimlidir.

Gelen olay hızı düşükse, 100 satırdan daha düşük toplu iş boyutları oluşturabilir ve bu da toplu eklemenin verimsiz olmasını sağlar ve çok fazla disk alanı kullanır. Bu sınırlamayı geçici olarak çözmek için şu eylemlerden birini yapabilirsiniz:

  • Her satır için basit ekleme kullanmak için BIR INSTEAD OF tetikleyicisi oluşturun.
  • Önceki bölümde açıklandığı gibi bir In-Memory geçici tablosu kullanın.

Kümelenmemiş columnstore dizinine (NCCI) yazarken böyle bir senaryo oluşur. Burada küçük toplu eklemeler dizini kilitleyebilecek çok fazla segment oluşturabilir. Bu durumda, bunun yerine Kümelenmiş Columnstore dizini kullanılması önerilir.

Özet

Özetle, SQL çıkışı için Azure Stream Analytics'teki bölümlenmiş çıkış özelliğiyle, SQL Azure'da bölümlenmiş bir tabloyla işinizin paralelleştirilmesi önemli aktarım hızı geliştirmeleri sunmalıdır. bir In-Memory tablosundan Disk tabanlı tablolara veri taşımayı düzenlemeye yönelik Azure Data Factory kullanmak, büyük aktarım hızı kazançları sıralayabilir. Mümkünse, ileti yoğunluğunun iyileştirilmesi genel aktarım hızının iyileştirilmesinde de önemli bir faktör olabilir.

Sonraki adımlar