Ana içeriğe geç

Uygulama performansını optimize etme

Daha küçük uygulama boyutu, basitleştirilmiş veri modelleri ve set analizinin stratejik kullanımı sayesinde uygulama performansı artırılabilir. Bu bölümde performansın etkilenebileceği alanlar ve uygulama performansını nasıl değerlendirebileceğiniz ve izleyebileceğiniz ele alınarak performans sorunlarından kaçınmanıza yardımcı olmak amaçlanmaktadır.

Uygulama karmaşıklığı

Bunlar, sorunların tanılanmasına yardımcı olabilen bağımsız kategorilerdir. En karmaşık uygulamalar en düşük performansa sahiptir.

Basit uygulamalar:

  • Karmaşık set analizi veya If() deyimleri içermez.
  • Büyük tablolar içermez.
  • Basit bir veri modeline sahiptir.
  • Basit hesaplamalar içerir.
  • Büyük veri hacimleri içerebilir.

Denetlenmiş uygulamalar:

  • Birçok tablo içeren bir veri modeline sahiptir ancak en iyi uygulamaları izler.
  • Set analizini ve birkaç If() deyimini kullanır.
  • Sayfalarda büyük veya geniş tablolar (15 sütun ya da daha fazla) içerir.

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.

Uygulama performansını değerlendirme

Uygulamanızı Qlik Sense Enterprise SaaS veya Qlik Sense Business içerisinde geliştirdiğinizde uygulama performansını değerlendirebilirsiniz. Bu, performansı optimize ederken odaklanılacak nesneleri belirlemek üzere uygulamadaki tüm genel nesneler için yanıt sürelerini ve kaynak tüketimini inceler. Değerlendirme sonuçlarını ve bir optimizasyonun etkisini görmek için bir uygulamanın farklı sürümlerine ilişkin performansı da karşılaştırabilirsiniz. Sonuçlar yol gösterici olarak sağlanmaktadır ve üretim ortamlarında kullanıcı tarafından algılanan gerçek performansı garanti edemez.

Uygulama ayrıntıları

Qlik Sense dağıtımınızın performansını etkilediğinden, uygulama boyutuna göre donanım ortamınızı göz önünde bulundurmanız gerekir. Örneğin, uygulamalarınızı optimize etmezseniz daha fazla donanım kaynağı gerekebilir.

Uygulama boyutunun izlenmesi şu konularda size yardımcı olur:

  • Mevcut performansın anlaşılması.
  • Yeni bir uygulama dağıtmanın performans etkisinin anlaşılması.
  • Mevcut bir uygulamayı değiştirmenin performans etkisinin anlaşılması.
  • Performans sorunlarının çözülmesi.
  • Gelecekteki büyüme için plan yapılması.

Qlik, uygulamalarınızı değerlendirmenize yardımcı olabilecek araçlar sağlar. Daha fazla bilgi için bkz. Qlik Sense Enterprise'da performans ve ölçeklenebilirlik (yalnızca İngilizce).

Performansı etkileyebilecek temel uygulama öğeleri şunlardır:

Performansı etkileyebilecek uygulama ayrıntıları
Özellik Açıklama
Uygulama diski boyutu (MB) QMC içinde uygulama boyutunu bulabilirsiniz. Uygulamalar'a gidin, sağ tarafta Eylemler'in yanından Sütun seçici'yi açın. Dosya boyutu (MB) seçeneğinin yanındaki seçenek düğmesine tıklayın. Qlik Sense Desktop kullanıyorsanız Windows Explorer'da uygulama boyutunu bulabilirsiniz. Varsayılan klasör %USERPROFILE%\Documents\Qlik\Sense\Apps şeklindedir. Uygulamalar klasöründe tüm uygulama adları ve dosya boyutları listelenir.

RAM'deki uygulama boyutu (GB)

Aşağıdakileri yaparak bir uygulamanın temel RAM ayak izini belirleyebilirsiniz:

  1. Qlik Sense sunucusunu yeniden başlatın.
  2. Mevcut RAM kullanımını not edin.
  3. Qlik Sense uygulamasını açın.
  4. RAM üzerindeki farkı kaydedin.

Qlik Sense Haziran 2018 veya sonraki bir sürümü kullanıyorsanız bu metriği bulmak için App Metadata Analyzer öğesini kullanabilirsiniz. Daha fazla bilgi için bkz. App Metadata Analyzer (yalnızca İngilizce).

Uygulamadaki toplam satırlar (M)

Toplam satırları hesaplamak için sistem alanlarını kullanabilirsiniz. Sum($Rows) hesaplamasıyla bir KPI oluşturun. Daha fazla bilgi için bkz. Sistem alanları.
Uygulamadaki toplam alanlar Toplam alanları hesaplamak için sistem alanlarını kullanabilirsiniz. Sum($Fields) hesaplamasıyla bir KPI oluşturun. Daha fazla bilgi edinmek için bkz. Sistem alanları.
Uygulamadaki toplam tablolar Toplam tabloları hesaplamak için sistem alanlarını kullanabilirsiniz. Count(DISTINCT $Table) hesaplamasıyla bir KPI oluşturun. Daha fazla bilgi için bkz. Sistem alanları.

Uygulamanızı izleme

Qlik Management Console (QMC), Qlik Sense Enterprise on Windows üzerinde sistem performansı ve kullanımını izlemeye yönelik uygulamalar sağlar:

  • Operations Monitor uygulaması; sunucu belleği ve CPU kullanımı, etkin kullanıcılar ve yeniden yükleme görev etkinliği gibi donanım kullanımına ilişkin bilgi sağlar. Ayrıca, Qlik Sense sunucu ortamındaki günlük oluşturma etkinlikleri, hatalar ve uyarılar hakkında özet ve ayrıntılı bilgiler de sunar.

  • License Monitor uygulaması, lisans kullanımını izler ve lisans tahsisi ile ilgili değişikliklerin izlenmesini kolaylaştırır.

  • Log Monitor uygulaması kullanılabilir olan neredeyse tüm günlük verilerini sunar, trend analizi ve sorun giderme olanağı sağlar.
  • Sessions Monitor uygulaması, uygulamaların kullanımıyla ilgili günlük verilerini gösterir.
  • Reloads Monitor uygulaması, hem QMC hem de hub'da açık olan uygulamalardan yeniden yükleme verileriyle ilgili ayrıntılı bilgi sunar.
  • Sense System Performance Analyzer uygulaması tüm düğümlerde Qlik Sense performansını görüntüler.
  • Sense Connector Logs Analyzer uygulaması, belirli Qlik bağlayıcılarının kullanımına ve hatalarına ilişkin içgörüler sağlar.
  • App Metadata Analyzer uygulaması, bir uygulama veri modelinin ve kaynak kullanımının daha yüksek ayrıntı düzeyini içerecek şekilde tüm Qlik Sense uygulamalarınızın bütünsel bir görünümünü sağlar.

Daha fazla bilgi için bkz. Qlik Sense Enterprise on Windows sitesini izleme (yalnızca İngilizce).

Büyük veri hacimleri

Büyük veri hacimlerine bağlanırken bu mimari stratejileri devreye alabilirsiniz.

Segmentasyon

QVDs öğelerini, zaman dilimi, bölge veya toplama düzeyi gibi boyutlara göre segmentlere ayırabilirsiniz. Örneğin şunları elde edebilirsiniz:

  • Son iki yıla ait verileri içeren bir QVD.
  • İki yıldan eski geçmiş verileri içeren bir QVD.
  • Daha yüksek düzeyde toplanan tüm verileri içeren bir QVD. Örneğin, tarih yerine aylık veya bireysel müşteriler yerine ülke başına.

  • Tüm verileri içeren ve yalnızca küçük bir kullanıcı alt kümesi tarafından kullanılan tek bir büyük QVD.

Uygulamaları benzer şekilde segmentlere ayırabilirsiniz. Küçük uygulamalar, çoğu kullanıcının analiz ihtiyaçlarına yanıt verir. Böylece bellek tasarrufu sağlanır.

Farklı bölgelere odaklanan birden çok uygulamanız da olabilir. Böylece kullanıcılar, ilgilerini çekmeyen verileri içeren veya erişim haklarına sahip olmadıkları bir uygulamayı açmaz. Bölüm erişimi aracılığıyla erişilebilir olmayan veriler, belleği etkilemeye devam eder.

İsteğe bağlı uygulama oluşturma ODAG

Qlik Sense isteğe bağlı uygulamaları, kullanıcılara büyük veri depolarının toplanmış görünümlerini sunar. Kullanıcılar daha sonra ayrıntılı analiz için alakalı veri alt kümelerini belirleyip yükleyebilir.

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

  1. Toplanmış verileri içeren bir alışveriş sepeti.
  2. Ayrıntıyı 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 karşılandıktan sonra, şablon uygulamayı istenen ayrıntılarla dolduran özel bir LOAD kodu oluşturulur. Daha fazla bilgi için bkz İsteğe bağlı uygulamalarla büyük veri yönetimi

Belge zinciri oluşturma

Belge zinciri oluşturma, kullanıcıların düzenli olarak kullandığı, toplanmış bir uygulama olduğu anlamına gelir. Bir kullanıcı daha fazla ayrıntıya ihtiyaç duyarsa seçimler, toplanmış uygulamadan ayrıntı uygulamasına geçirilir; böylece kullanıcı daha düşük bir ayrıntı düzeyini görüntüleyebilir. Bu sayede kullanıcılar gereksiz ayrıntıları yüklemediğinden bellek tasarrufu sağlanır. Belge zinciri oluşturma, APIs ile desteklenir.

Veri modeli performansı

Bunlar, veri modeli performansını etkileyebilecek göstergelerdir. Her biri, uygulamanın kullanışlılığını artıracak en iyi alıştırmadı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ümlenmelidir, 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 koddan veri okuma sırasında hız sağlamak için optimize edilmiştir, ancak hala kompakttı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 olarak güncellenen veritabanlarından büyük miktarda veriyle bağlantılıysa tüm veri kümesinin yeniden yüklenmesi çok zaman alabilir. 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 edinmek 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 sonra aşağıdaki gibi bir şey kullanarak ayıklanan saatle yeni bir alan oluşturabilirsiniz: 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 fiilen kullanılmakta olan 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.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 uygulamalardır.

Sayfa performansı en iyi uygulamaları
Eylem Açıklama

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

If() işlevi bir toplama işlevinde kullanılırsa bu, kayıt düzeyinde çalışacak ve birçok kez değerlendirilecektir.

Örneğin, bir toplamada 1000 kaydınız varsa bir If() koşulu 1000 defa değerlendirilir. Deyimleri iç içe yerleştirirseniz bu hızla basamaklandırılabilir. Bunun yerine set analizi kullanmalısınız. Toplamadan önce bir set analizi filtresinin uygulanması daha hızlı yanıtla sonuçlanır. Bu yanıtlar daha sonra set analizi aracılığıyla önbelleğe de alınabilir; If() ise bunu yapamaz. Veri modeli üzerindeki diğer değişiklikleri ve işlevleri de dikkate almanız gerekir.

Bir toplama tablosundaki farklı tablolardaki alanlardan mümkün olduğunca kaçınılır.

Bir toplama değerlendirildiğinde, hesaplama iki adımda gerçekleştirilir:

  1. İlk adım, hesaplamanın yapılacağı ilgili birleşimleri bulmaktır. Bu adım tek iş parçacıklıdır.

  2. İkinci adım, hesaplamayı gerçekleştirmektir. Bu adım çok iş parçacıklıdır.

Tek iş parçacıklı kısım, performansı büyük oranda etkileyebilir. Örneğin, toplama içinde birden fazla alanınız varsa örneğin, Sum(Quantity*ListPrice). Quantity olgu tablosundaysa ve ListPrice ana ürünler tablosundaysa, ürünü toplamaya başlayabilmek üzere birleşimleri bulmak için altyapının iki tabloyu birleştirmesi gerekir. Birleştirme tek iş parçacıklı, toplama çok iş parçacıklı kısımdır. Her iki alan da aynı tabloda bulunursa, birleştirme gerekmez ve toplama büyük oranda daha hızlı değerlendirilir.

Aggr() ve iç içe geçen Aggr() işlevlerinin minimum düzeyde kullanılması

Aggr() işlevi, performansı çok büyük ölçüde etkiler. Yanlış kullanım sonucunda yanlış sonuçlar alınabilir. Örneğin, Aggr() işlevindeki boyutlardan farklılık gösteren boyutları içeren bir tabloda. Daha fazla bilgi için bkz. Ne zaman AGGR kullanılmamalıdır?

Mümkün olduğunda set analizinin kullanılması

Mevcut seçimler tarafından tanımlanan normal setten farklı olan bir veri değeri setini tanımlamak için set analizi kullanabilirsiniz. Daha fazla bilgi için bkz. Set analizi ve set ifadeleri.

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

Dize karşılaştırmaları, set analizi kadar verimli değildir. Örneğin, Match(), MixMatch(), WildMatch() ve Pick() öğelerinden kaçınmanız gerekir. Bunun yerine kodda işaretler oluşturun veya set analizi kullanın. Daha fazla bilgi için bkz. Koşullu fonksiyonlar ve Koşullu toplamaların performansı.

Kapsamlı hesaplamalar içeren nesnelerde hesaplama koşullarının kullanılması

Bir seçim olmadığında birçok kayıt içeren görselleştirmeleriniz olabilir. En iyi alıştırma olarak nesnelere, yalnızca belirli seçimler yapıldıktan sonra oluşturulacak şekilde hesaplama koşulları ekleyin. Böylece çok büyük hiper küplerin oluşturulması engellenir. Örneğin: GetSelectedCount([Country])=1 OR GetPossibleCount([Country])=1. Bu senaryoda, kullanıcı tek bir ülke seçmediği veya yalnızca bir ülkenin mümkün olduğu başka seçimler yapmadığı sürece görselleştirme oluşturulmaz.

Mümkün olduğunda hesaplamaların kodda önceden hesaplanması

Veri modelinin en düşük ayrıntı düzeyinde bulunan tüm hesaplamalar kodda hesaplanmalıdır. Örneğin, bir tablodaki aynı kayıtta Sales ve Cost varsa Sales - Cost AS Margin hesaplamasını yaparak marjı türetebilirsiniz. Seçime göre değişiklik göstermeyeceğini veya farklı bir ayrıntı düzeyine bağlı olduğunu biliyorsanız diğer değerleri önceden de toplayabilirsiniz.

Tablolarda 15'ten az sütun olması ve hesaplama koşulları içermesi

15 sütun içeren bir tablo geniş olarak değerlendirilir. Tablolarınız pek çok kayıttan oluşuyorsa tablo nesnesinde hesaplanan koşulları, yalnızca belirli seçimlerden veya ölçütler karşılandıktan sonra oluşturulacak şekilde kullanmanız gerekir. Tablonuz çok genişse şunları yapmayı düşünün:

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

Çok fazla sayıda nesne içermeyen sayfalar kullanma.

Kullanıcı sayfaya gittiğinde nesneler hesaplanır. Bir kullanıcı o sayfada her seçim yaptığında, mevcut durum önbellekte yoksa her bir nesne yeniden hesaplanır. Birden çok grafik içeren bir sayfanız varsa kullanıcının neredeyse her seçimde her nesnenin hesaplanmasını beklemesi gerekir. Bu da altyapıda önemli düzeyde bir yük oluşturur. En iyi uygulama olarak, net ve küçük bir uygulama geliştirmek için Dashboard/Analysis/Reporting (DAR) kavramını izleyin. Daha fazla bilgi için bkz. DAR yöntemi.

Set analizinde kullanılmak üzere kodda sayısal işaretlerden yararlanılması

İşaretler içeren set analizi, dize karşılaştırmaları veya çarpma kullanımından daha verimli olabilir.

İfadeler için ana öğelerin veya değişkenlerin kullanılması

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