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.
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.
Orta düzey 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 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) | Uygulama boyutunu QMC içinde 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, uygulama boyutunu Windows Explorer'da 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:
Eğer Qlik Sense Haziran 2018 veya sonraki bir sürümünü kullanıyorsanız, bu metriği bulmak için App Metadata Analyzer öğesini kullanabilirsiniz. Daha fazla bilgi için bkz. Application Metadata Analyzer (yalnızca İngilizce). |
|
Uygulamadaki toplam satırlar (M) |
Toplam satırları hesaplamak için sistem alanlarını kullanabilirsiniz. KPI Sum($Rows) hesaplamasıyla bir oluşturun. Daha fazla bilgi için bkz. Sistem alanları. |
| Uygulamadaki toplam alanlar | Toplam alanları hesaplamak için sistem alanlarını kullanabilirsiniz. KPISum($Fields)hesaplamasıyla bir oluşturun. Daha fazla bilgi için bkz. Sistem alanları. |
| Uygulamadaki toplam tablolar | Toplam tabloları hesaplamak için sistem alanlarını kullanabilirsiniz. KPICount(DISTINCT $Table) hesaplamasıyla bir oluşturun. Daha fazla bilgi için bkz. Sistem alanları. |
Uygulamanızı izleme
Qlik Yönetim Konsolu (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 ve trend analizi ile 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 uygulamanın 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 analitik ihtiyaçlarını karşılayacaktır. Böylece bellek tasarrufu sağlanır.
Farklı bölgelere odaklanmış birden çok uygulamanız da olabilir. Bu şekilde, kullanıcılar ilgilenmedikleri veya erişim haklarına sahip olmadıkları verileri içeren bir uygulamayı açmazlar. 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 toplu 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 komut dosyası 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çirilebilir; 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 bkz. Uygulama zinciri oluşturma.
Uygulama zinciri oluşturma, APIs üzerinden de desteklenmektedir. Örneğin, özel uygulama zinciri oluşturmak için Uygulama Tümleştirme API’si kullanabilirsiniz. Daha fazla bilgi için bkz. 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ılabilirliğini artıracak en iyi uygulamadı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ı |
Döngüsel referanslar, iki alanın birden fazla ilişkilendirmesi olduğunda oluşur. Qlik Sense bunları, tablolardan birine olan Bağlantı'yı değiştirerek çözmeye çalışacaktı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, bakınız: 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 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 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 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. Kullanmaktan kaçının Load * ve SELECT. Ş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 bir QVD dosyasından yükleyerek ve ardından değerleri simge anahtarlarına dönüştürmek üzere AutoNumber deyimini kullanarak optimize edilmiş bir 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 bkz. 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 komut dosyasında 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:
|
|
Ç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, temiz ve minimal 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. |
| 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. |