Uygulama performansını optimize etme | Qlik Cloud Yardımı
Ana içeriğe geç Tamamlayıcı içeriğe geç

Uygulama performansını optimize etme

Uygulama performansı; azaltılmış uygulama boyutu, basitleştirilmiş veri modelleri ve küme analizinin stratejik kullanımıyla iyileştirilebilir. Bu bölüm, performansın etkilenebileceği alanları belirterek ve uygulama performansını nasıl değerlendirip izleyebileceğinizi göstererek performans sorunlarından kaçınmanıza yardımcı olacaktır.

Performans değerlendirme aracını kullanarak uygulamanızın performansını izleyebilir ve ayrıca daha büyük motorları manuel olarak atayarak farklı motor boyutlarında nasıl performans gösterdiğini test edebilirsiniz. Daha fazla ayrıntı için bkz. Uygulama performansı değerlendirmesi ve Assigning engines to improve application performance.

Uygulama karmaşıklığı

Bunlar, sorunları teşhis etmeye yardımcı olabilecek esnek kategorilerdir. En karmaşık uygulamalar en düşük performansa sahiptir.

Basit uygulamalar:

  • Karmaşık küme analizi veya If() ifadeleri içermez.
  • Büyük tablolar içermez.
  • Basit bir veri modeline sahiptir.
  • Basit hesaplamalar içerir.
  • Büyük veri hacimlerine sahip olabilir.

Orta düzey uygulamalar:

  • Çok sayıda tablo içeren bir veri modeli vardır ancak en iyi pratikleri takip eder.
  • Küme analizi ve birkaç If() ifadesi kullanır.
  • Sayfalarda büyük veya geniş tablolara (15 sütun veya daha fazla) sahiptir.

Karmaşık uygulamalar:

  • Çok karmaşık bir veri modeline sahiptir.

  • Büyük veri hacimlerine bağlanır.
  • Karmaşık hesaplamalar, grafikler ve tablolar içerir.

Büyük veri hacimleri

Büyük veri hacimlerine bağlanırken bu mimari stratejilerini uygulayabilirsiniz.

Segmentasyon

QVDs dosyalarını zaman aralığı, bölge veya toplama düzeyi gibi boyutlar bazında segmentlere ayırabilirsiniz. Örneğin, şunlara sahip olabilirsiniz:

  • En son iki yıla ait verileri içeren bir QVD.
  • İki yıldan daha eski geçmiş verileri içeren bir QVD.
  • Daha yüksek bir düzeyde toplanmış tüm verileri içeren bir QVD. Örneğin, tarih yerine ay başına veya tek tek müşteriler yerine ülke başına.

  • Yalnızca küçük bir kullanıcı alt kümesi tarafından kullanılan, tüm verileri içeren büyük bir QVD.

Uygulamaları da benzer şekilde segmentlere ayırabilirsiniz. Daha küçük uygulamalar, çoğu kullanıcının analitik ihtiyaçlarını karşılayacaktır. Bu, bellek tasarrufu sağlar.

Farklı bölgelere odaklanan birden fazla uygulamanız da olabilir. Bu sayede kullanıcılar, ilgilenmedikleri veya erişim haklarının olmadığı verileri içeren bir uygulamayı açmazlar. bölüm erişimi aracılığıyla erişilemeyen veriler yine de belleği etkiler.

Talep Üzerine Uygulama Oluşturma (ODAG)

Qlik Sense talep üzerine uygulamaları, kullanıcılara büyük veri depolarının toplu görünümlerini sunar. Detaylı analiz için verilerin ilgili alt kümelerini tanımlayabilir ve yükleyebilirler.

Kullanıcı açısından iki uygulama vardır:

  1. Toplanmış verileri içeren bir alışveriş sepeti.
  2. Detayları görüntülemek için kullanılan boş bir şablon uygulaması.

Kullanıcı, alışveriş sepeti uygulamasında seçimler yapar. Bir eşik değerine ulaşıldığında, şablon uygulamasını talep edilen detaylarla dolduran özel bir LOAD komut dosyası oluşturulur. Daha fazla bilgi için bkz. İsteğe bağlı uygulamalarla büyük veri yönetimi.

Uygulama zincirleme

Uygulama zincirleme (QlikView uygulamasında belge zincirleme olarak bilinir), kullanıcıların düzenli olarak tükettiği toplanmış bir uygulama olduğu anlamına gelir. Bir kullanıcının daha fazla detaya ihtiyacı varsa seçimler, toplanmış uygulamadan detay uygulamasına aktarılabilir, böylece daha düşük bir ayrıntı düzeyini görüntüleyebilirler. Bu, kullanıcıların gereksiz detayları yüklemesini önlediği için bellek tasarrufu sağlar. Uygulama zincirleme, bir sayfaya düğme nesneleri eklenerek gerçekleştirilebilir. Daha fazla bilgi için bkz. Uygulama zinciri oluşturma.

Uygulama zincirleme, APIs aracılığıyla da desteklenir. Örneğin, özel uygulama zincirleme oluşturmak için Uygulama Tümleştirme API’si API'sini kullanabilirsiniz. Daha fazla bilgi için bkz. Uygulama Tümleştirme API’si (yalnızca İngilizce).

Dinamik görünümler

Dinamik görünümler, yüksek veri hacmi veya hızla değişen veri senaryoları için güncel görselleştirmeler sağlar. Dinamik görünümlerle çalışırken aşağıdakileri göz önünde bulundurun:

  • Dinamik görünümleri güncellediğinizde, veri kaynağı doğrudan yüklenir. Güncelleme performansı, temel veri kaynağının performansından etkilenir.

  • Dinamik görünüm şablonu uygulamaları, dinamik grafikler oluşturmanıza yardımcı olabilir.

Dinamik görünümleri kullanma hakkında daha fazla bilgi için bkz. Dinamik görünümlerle verileri yönetme.

Direct Query

Bellek içi uygulamalar önerilse de Direct Query, verileri orijinal kaynağında tutmanıza olanak tanır. Direct Query kullanımınızı optimize etmek için aşağıdakileri göz önünde bulundurun:

  • Direct Query performansı, temel veri kaynağının performansından büyük ölçüde etkilenir.

  • Karmaşık sorgular performans sorunlarına yol açabileceğinden, Direct Query veri modelinizi mümkün olduğunca basit tutun.

Direct Query hakkında daha fazla bilgi için bkz. Bulut veritabanlarına doğrudan Direct Query ile erişme.

Veri modeli performansı

Bunlar, veri modeli performansını etkileyebilecek göstergelerdir. Her biri, uygulamanın kullanılabilirliğini artıracak en iyi uygulamadır.

Veri modeli performansı en iyi uygulamaları
Eylem Açıklama

Yapay anahtarların kaldırılması

Qlik Sense, iki veya daha fazla veri tablosunda iki ya da daha fazla ortak alan olduğunda yapay anahtarlar oluşturur. Bu, kodda veya veri modelinde bir hata olması anlamına gelebilir. Yapay anahtarları tanılamak için bkz. Yapay anahtarlar.

Döngüsel referansların veri modelinden kaldırılması

İki alanın birden fazla ilişkilendirmesi olduğunda döngüsel referanslar oluşur. Qlik Sense, tablolardan birine bağlantıyı değiştirerek bunları çözümlemeye çalışır. Ancak, tüm döngüsel referans uyarıları çözülmelidir, bkz. Döngüsel referansları anlama ve çözme.

Uygun veri ayrıntı düzeyi

Yalnızca gerekli verileri yüklemelisiniz. Örneğin, bir grup kullanıcının yalnızca haftaya, aya ve yıla göre bölünmüş verilere ihtiyacı vardır. Bellek tasarrufu sağlamak için yükleme komut dosyasındaki verileri toplayabilir veya toplanan verilere yükleyebilirsiniz. Bir kullanıcının daha düşük ayrıntı düzeyinde verileri görselleştirmesi gerekiyorsa ODAG veya belge zinciri oluşturmayı kullanabilirsiniz.

Mümkün olduğunda QVDs kullanılması

QVD, Qlik Sense uygulamasından dışa aktarılan veri tablosunu içeren bir dosyadır. Bu dosya biçimi, bir komut dosyasından veri okunurken hız için optimize edilmiştir ancak yine de çok kompakttır. Dosya biçimi bir koddan veri okuma sırasında hız sağlamak için optimize edilmiştir, ancak oldukça kompakt olan yapısını korumaktadır. Bir QVD dosyasından veri okumak, normalde diğer veri kaynaklarından okumaktan 10-100 kat daha hızlıdır. Daha fazla bilgi için bkz. QVD dosyalarıyla çalışma.

QVD dosyalarının yüklemede optimize edilmesi

QVD dosyaları iki modda okunabilir: standart (hızlı) ve optimize (daha hızlı). Seçilen mod, kod altyapısı tarafından otomatik olarak belirlenir.

Optimize edilmiş yüklerle ilgili bazı sınırlamalar vardır. Alanlar yeniden adlandırılabilir ancak bu işlemlerin tümü standart yüklemeyle sonuçlanır:

  • Yüklenen alanlardaki dönüştürmeler.
  • Qlik Sense uygulamasının, kayıtların paketini açmasına neden olan where cümlesini kullanma.
  • Yüklenen bir alanda Harita kullanma.

Artışlı yüklemelerden yararlanılması

Uygulamanız sürekli güncellenen veritabanlarından büyük miktarda veriye bağlanıyorsa, tüm veri kümesini yeniden yüklemek zaman alıcı olabilir. Bunun yerine, veritabanından yeni veya değiştirilmiş kayıtları almak için artışlı yüklemeleri kullanmalısınız. Daha fazla bilgi edinmek için bkz. Yeni ve güncellenmiş kayıtları artışlı yükleme ile yükleme.

Snowflake modelinin birleştirilmesi

Snowflake veri modeliniz varsa Join önekini veya başka eşleme ile bazılarını birleştirerek veri tablosu sayısını azaltabilirsiniz. Bu özellikle büyük olgu tabloları için önemlidir. İyi bir genel bir kural, tek bir büyük tabloya sahip olmaktır. Daha fazla bilgi için bkz. Birleştirmek veya Birleştirmemek.

Az sayıda alan içeren tabloların normal dışı tutulması

Birkaç alan içeren iki tablonuz varsa bunların birleştirilmesi performansı artırabilir. Daha fazla bilgi için bkz. Join ve Keep ile tabloları birleştirme.

Eşleme yüklemeleri içeren normal dışı arama (yaprak) tabloları

Yalnızca bir tablodan diğerine bir alan eklemeniz gerekiyorsa Join önekini kullanmamanız gerekir. ApplyMap arama işlevini kullanmalısınız, bkz. Birleştirmeme - ApplyMap kullanma.

Zaman damgalarının tarih alanından kaldırılması veya ayrılması

Zaman damgası mevcut olduğunda, dize temsili daha büyük olduğundan ve farklı değerlerin sayısı daha büyük olduğundan tarih alanları, alanı doldurabilir. Analiziniz için hassasiyet gerekli değilse, zaman damgasını ör. Timestamp(Floor(YourTimestamp,1/24)) öğesini kullanarak en yakın saate yuvarlayabilir ya da Date(Floor(YourTimestamp)) öğesini kullanarak saat bileşenini tamamen kaldırabilirsiniz.

Zaman damgası olmasını istiyorsanız bunu tarihten ayırabilirsiniz. Aynı Floor() işlevini kullanabilir ve ardından ayıklanan zamanla yeni bir alan oluşturmak için şuna benzer bir şey kullanabilirsiniz: Time(Frac(YourTimestamp)).

Gereksiz alanların veri modelinden kaldırılması

Veri modelinize yalnızca gerekli alanları yüklemelisiniz. Load * ve SELECT kullanmaktan kaçının. Şunları koruduğunuzdan emin olun:

  • Analiziniz için gerekli olan alanlar.
  • Uygulamada gerçekten kullanılan alanlar.

Yüksek veri hacimleriyle çalışılırken bağlantı tablolarından kaçınılması

Mümkün olduğunda bağlantı tablolarını kullanmanız gerekir. Ancak büyük veri hacimleriyle çalışıyorsanız birleştirilmiş tablolar, bağlantı tablolarından daha yüksek performans gösterebilir.

Birleştirilmiş boyutların yeni alanlara bölünmesi

Birleştirilmiş boyutları ayrı alanlara ayırmanız gerekir. Böylece alanlarınızdaki benzersiz değer oluşumu sayısı azalır. Bu, zaman damgalarının optimizasyonuna benzer.

Mümkün olduğunda AutoNumber kullanılması

Verilerinizi önce QVD dosyasından yükleyerek ve ardından değerleri simge anahtarlarına dönüştürmek üzere AutoNumber deyimini kullanarak bir optimize yükleme oluşturabilirsiniz. Daha fazla bilgi için bkz. AutoNumber

Veri adalarından kaçınılması

Veri adaları kullanışlı olabilir ancak genellikle performansı etkiler. Seçim için değer oluşturduğunuzda, değişkenler kullanınız.

QVD'lerin artışlı zaman dilimlerine göre depolanması

QVD'yi segmentler halinde (ör. aylık olarak) depolamanız gerekir. Bu daha küçük aylık QVD'ler, tüm verilere gerek olmayabilecek birçok farklı uygulamayı destekleyebilir.

Sayfa performansı

Bunlar, sayfaların ve görselleştirmelerin performansını artıracak en iyi pratiklerdir.

Sayfa performansı en iyi pratikleri
Eylem Açıklama

Mümkün olduğunda If() işlevinden kaçınılır

Eğer If() işlevi bir toplama işlevinin içinde kullanılırsa, kayıt düzeyinde çalışır ve birçok kez değerlendirilir.

Örneğin, bir toplamada 1000 kaydınız varsa, bir If() koşulu 1000 kez değerlendirilir. İfadeleri iç içe yerleştirirseniz bu durum hızla katlanabilir. Bunun yerine küme analizi kullanmalısınız. Küme analizi filtresi toplamadan önce uygulanır ve bu da daha hızlı bir yanıt sağlar. Bu yanıtlar, If() işlevinin aksine küme analizi aracılığıyla önbelleğe de alınabilir. Diğer işlevleri ve veri modelinde yapılacak değişiklikleri de düşünebilirsiniz.

Mümkün olduğunda bir toplama tablosu içindeki farklı tablolardan alanlar kullanmaktan kaçınılır.

Bir toplama değerlendirildiğinde, hesaplama iki adımdan geçer:

  1. İlk adım, hesaplamanın yapılacağı ilgili kombinasyonları bulmaktır. Bu adım tek iş parçacıklıdır (single-threaded).

  2. İkinci adım hesaplamayı gerçekleştirmektir. Bu adım çok iş parçacıklıdır (multi-threaded).

Tek iş parçacıklı kısım performansı önemli ölçüde etkileyebilir. Bir örnek, toplama içinde birden fazla alanınız olmasıdır, örneğin Sum(Quantity*ListPrice). Quantity değer tablosu içinde ve ListPrice ana ürünler tablosunda yer alıyorsa, motorun ürünü toplamaya başlamadan önce kombinasyonları bulmak için ilk olarak iki tabloyu birleştirmesi gerekir. Birleştirme tek iş parçacıklı kısımdır ve toplama çok iş parçacıklıdır. Her iki alan da aynı tabloda bulunuyorsa birleştirmeye gerek kalmaz ve toplama önemli ölçüde daha hızlı değerlendirilir.

Aggr() ve iç içe geçmiş Aggr() işlevleri minimum düzeyde kullanılır

Aggr() işlevi performansı büyük ölçüde etkiler. Hatalı kullanım yanlış sonuçlar verebilir. Örneğin, Aggr() işlevindeki boyutlardan farklı boyutlara sahip bir tabloda. Daha fazla bilgi için bkz. When should AGGR not be used?

Mümkün olduğunda küme analizi kullanılır

Mevcut seçimler tarafından tanımlanan normal kümeden farklı bir veri değerleri kümesi tanımlamak için küme analizini kullanabilirsiniz. Daha fazla bilgi için bkz. Set analizi.

Mümkün olduğunda dize karşılaştırmalarından kaçınılır

Dize karşılaştırmaları küme analizi kadar verimli değildir. Örneğin, Match(), MixMatch(), WildMatch() ve Pick() işlevlerinden kaçınmalısınız. Bunun yerine komut dosyasında bayraklar oluşturun veya küme analizi kullanın. Daha fazla bilgi için bkz. Koşullu fonksiyonlar ve Performance of conditional aggregations.

Yoğun hesaplamalar içeren nesnelerde hesaplama koşulları kullanılır

Seçim yapılmadığında çok sayıda kayıt içeren görselleştirmeleriniz olabilir. En iyi pratik olarak, nesnelere hesaplama koşulları ekleyin, böylece nesneler yalnızca belirli seçimler yapıldıktan sonra işlenir. Bu, çok büyük hiperküplerin oluşturulmasını durdurur. Örneğin: GetSelectedCount([Country])=1 OR GetPossibleCount([Country])=1. Bu senaryoda, kullanıcı tek bir ülke seçmedikçe veya yalnızca tek bir ülkenin mümkün olduğu diğer seçimleri yapmadıkça görselleştirme işlenmeyecektir.

Ölçüler mümkün olduğunda komut dosyasında önceden hesaplanır

Veri modelinin en düşük ayrıntı düzeyindeki tüm ölçüler komut dosyasında hesaplanmalıdır. Örneğin, bir tablodaki aynı kayıtta Sales ve Cost alanlarına sahipseniz, Sales - Cost AS Margin hesaplamasını yaparak marjı elde edebilirsiniz. Seçime bağlı olarak değişmeyeceğini bildiğiniz veya farklı bir ayrıntı düzeyine bağlı olan diğer değerleri de önceden toplayabilirsiniz.

Tablolar 15'ten az sütuna sahiptir ve hesaplama koşulları içerir

15 sütunlu bir tablo geniş kabul edilebilir. Tablolarınız çok sayıda kayıttan oluşuyorsa, tablo nesnesinde hesaplanmış koşullar kullanmalısınız, böylece tablo yalnızca belirli seçimler veya kriterler karşılandıktan sonra işlenir. Tablonuz çok genişse şunları göz önünde bulundurun:

  • Koşullu olarak gösterilen birden fazla daha küçük tablo oluşturma.
  • Sütunları koşullu olarak göstermek için yöntemler kullanma.
  • Tablolarınızı yalnızca analiziniz için gerekli olan alanlarla sınırlı tutma.

Sayfalar aşırı sayıda nesne içermez

Nesneler, kullanıcı sayfaya gittiğinde hesaplanır. Bir kullanıcı o sayfada her seçim yaptığında, mevcut durum önbellekte yoksa her nesne yeniden hesaplanacaktır. Çok sayıda grafik içeren bir sayfanız varsa, kullanıcının neredeyse her seçimde her nesnenin hesaplanmasını beklemesi gerekecektir. Bu durum motora önemli bir yük getirir. En iyi pratik olarak, temiz ve minimal bir uygulama geliştirmek için Dashboard/Analysis/Reporting (DAR) konseptini takip edin. Daha fazla bilgi için bkz. DAR methodology.

Küme analizinde kullanılmak üzere komut dosyasındaki sayısal bayraklardan yararlanılır

Bayraklar içeren küme analizi, dize karşılaştırmaları veya çarpma işlemi kullanmaktan daha verimli olabilir.

İfadeler için kullanılan ana öğeler veya değişkenler

Ana öğeler, yönetilen metriklerin sürüklenip bırakılmasını sağlar ve ifadelerin önbelleğe alınacağını garanti eder. Örneğin, Sum(Sales) ifadesi SUM(Sales) ifadesinden farklıdır. İfadeler yazım ve büyük/küçük harfe göre önbelleğe alınır ve yeniden kullanılabilmeleri için harfi harfine eşleşmeleri gerekir.

Veri yükleme performansı

Optimizing data loading is important for a seamless and responsive experience when working with applications in Qlik Cloud. This section highlights performance-affecting factors and provides guidance on how to prevent performance issues.

Qlik Data Gateway - Doğrudan Erişim

Verileri uygulamanıza yeniden yüklemek için Qlik Data Gateway - Doğrudan Erişim kullandığınızda, aşağıdaki faktörler performansı etkiler:

  • Data Gateway'i barındıran makine ile veri tabanı arasındaki bağlantı hızı ve gecikme süresi.

  • Data Gateway'i barındıran makine ile Qlik Cloud kiracınız arasındaki bağlantı hızı ve gecikme süresi. İdeal olarak, daha iyi performans için Data Gateway'i Qlik Cloud kiracınızla aynı bölgede barındırın.

Veri tabanı depolaması

Yavaş depolama bağlantıları yeniden yükleme sürelerini artırabilir. Şirket içinde (on-premises) veya bulutta barındırılan veri tabanları için aşağıdakileri göz önünde bulundurun:

  • Şirket içi (On-premises): Veri tabanınız şirket içindeyse ve bir sunucuyu diğer uygulamalarla paylaşıyorsa, performansı bu diğer uygulamaların faaliyetlerinden etkilenebilir.

  • Bulut: Doğru şekilde boyutlandırıldığında, bulut veri tabanları genellikle şirket içi veri tabanlarından daha iyi performans sunar. En iyi sonuçlar için bulut depolama alanınız için Qlik Cloud kiracınıza yakın bir bölge seçin.

Bu sayfa size yardımcı oldu mu?

Bu sayfa veya içeriği ile ilgili bir sorun; bir yazım hatası, eksik bir adım veya teknik bir hata bulursanız lütfen bize bildirin!