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 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:
Ö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:
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 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:
- Toplanmış verileri içeren bir alışveriş sepeti.
- 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.
Uygulama zinciri oluşturma
Uygulama zinciri oluşturma (QlikView bölümünde belge zinciri oluşturma olarak da bilinir), 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.Uygulama zinciri oluşturma, bir sayfaya düğme nesneleri eklenerek gerçekleştirilebilir. Daha fazla bilgi için bk. Düğme.
Uygulama zinciri oluşturma, APIs üzerinden de desteklenmektedir. Örneğin, özel uygulama zinciri oluşturmak için Uygulama Tümleştirme API'sini kullanabilirsiniz. Daha fazla bilgi için bk. Uygulama Tümleştirme API'si (yalnızca İngilizce).
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.
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:
|
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 için bkz. Komut dosyası oluşturma işleminde sonraki adımlar. |
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:
|
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 uygulamalardır.
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:
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 bk. 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 bk. Set analizi. |
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 bk. 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:
|
Ç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 bk. 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. |
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. |