Applicatieprestaties optimaliseren | Qlik Cloud Help
Ga naar hoofdinhoud Ga naar aanvullende inhoud

Applicatieprestaties optimaliseren

Applicatie-prestaties kunnen worden verbeterd door een kleinere applicatiegrootte, vereenvoudigde gegevensmodellen en strategisch gebruik van verzamelingenanalyse. Deze sectie helpt u prestatieproblemen te voorkomen door gebieden aan te wijzen waar de prestaties kunnen worden beïnvloed en hoe u applicatieprestaties kunt evalueren en bewaken.

U kunt de prestaties van uw applicatie bewaken met de tool voor prestatie-evaluatie, en u kunt ook testen hoe deze presteert op verschillende enginegroottes door handmatig grotere engines toe te wijzen. Zie Evaluatie van applicatieprestaties en Engines toewijzen om de prestaties van de applicatie te verbeteren voor meer informatie.

Applicatiecomplexiteit

Dit zijn losse categorieën die kunnen helpen bij het diagnosticeren van problemen. De meest complexe applicaties hebben de laagste prestaties.

Eenvoudige applicaties:

  • Bevatten geen complexe verzamelingenanalyse of If()-instructies.
  • Bevatten geen grote tabellen.
  • Hebben een eenvoudig gegevensmodel.
  • Bevatten eenvoudige berekeningen.
  • Kunnen grote gegevensvolumes hebben.

Gemiddelde applicaties:

  • Hebben een gegevensmodel met veel tabellen, maar volgen best practices.
  • Gebruiken verzamelingenanalyse en verschillende If()-instructies.
  • Hebben grote of brede tabellen op werkbladen (15 kolommen of meer).

Complexe applicaties:

  • Hebben een zeer complex gegevensmodel.

  • Maken verbinding met grote gegevensvolumes.
  • Bevatten complexe berekeningen, diagrammen en tabellen.

Grote gegevensvolumes

U kunt deze architectuurstrategieën toepassen wanneer u verbinding maakt met grote gegevensvolumes.

Segmentatie

U kunt QVDs segmenteren op dimensies zoals tijdsbestek, regio of aggregatieniveau. U kunt bijvoorbeeld het volgende hebben:

  • Een QVD die gegevens van de twee meest recente jaren bevat.
  • Een QVD die historische gegevens van meer dan twee jaar oud bevat.
  • Een QVD die alle gegevens geaggregeerd op een hoger niveau bevat. Bijvoorbeeld per maand in plaats van per datum, of per land in plaats van individuele klanten.

  • Eén grote QVD met alle gegevens, die slechts door een kleine subset van gebruikers wordt gebruikt.

U kunt de applicaties op een vergelijkbare manier segmenteren. Kleinere applicaties zullen voldoen aan de analytische behoeften van de meeste gebruikers. Dit bespaart geheugen.

U kunt ook meerdere applicaties hebben die gericht zijn op verschillende regio's. Op deze manier openen gebruikers geen applicatie met gegevens waarin ze niet geïnteresseerd zijn of waartoe ze geen toegangsrechten hebben. Gegevens die niet toegankelijk zijn via sectietoegang hebben nog steeds invloed op het geheugen.

On-Demand Application Generation (ODAG)

Qlik Sense on-demand applicaties geven gebruikers geaggregeerde weergaven van big data-opslag. Ze kunnen relevante subsets van de gegevens identificeren en laden voor gedetailleerde analyse.

Vanuit het perspectief van de gebruiker zijn er twee applicaties:

  1. Een winkelwagentje met geaggregeerde gegevens.
  2. Een lege sjabloonapplicatie die wordt gebruikt om details weer te geven.

De gebruiker maakt selecties in de winkelwagentje-applicatie. Zodra een drempel is bereikt, wordt een aangepast LOAD-script gemaakt dat de sjabloonapplicatie vult met de gevraagde details. Zie Big data beheren met on-demand applicaties voor meer informatie.

Applicatiekoppeling

Applicatiekoppeling (bekend als documentkoppeling in QlikView 12) betekent dat er een geaggregeerde applicatie is die gebruikers regelmatig consumeren. Als een gebruiker meer details nodig heeft, kunnen selecties worden doorgegeven van de geaggregeerde applicatie naar een detailapplicatie, zodat ze een lager granulariteitsniveau kunnen bekijken. Dit bespaart geheugen, omdat gebruikers geen onnodige details laden. Applicatiekoppeling kan worden uitgevoerd door knopobjecten toe te voegen aan een werkblad. Zie Applicaties koppelen voor meer informatie.

Applicatiekoppeling wordt ook ondersteund via APIs. U kunt bijvoorbeeld de App-integratie API gebruiken om aangepaste applicatiekoppeling te maken. Zie App-integratie API (alleen in het Engels) voor meer informatie.

Dynamische weergaven

Dynamische weergaven maken up-to-date visualisaties mogelijk voor scenario's met grote gegevensvolumes of snel veranderende gegevens. Houd rekening met het volgende wanneer u met dynamische weergaven werkt:

  • Wanneer u dynamische weergaven bijwerkt, wordt de gegevensbron direct geladen. De updateprestaties worden beïnvloed door de prestaties van de onderliggende gegevensbron.

  • Sjabloonapplicaties voor dynamische weergaven kunnen u helpen bij het maken van dynamische diagrammen.

Zie Gegevens beheren met dynamische weergaven voor meer informatie over het gebruik van dynamische weergaven.

Direct Query

Hoewel in-memory applicaties worden aanbevolen, stelt Direct Query u in staat om gegevens in de oorspronkelijke bron te houden. Houd rekening met het volgende om uw gebruik van Direct Query te optimaliseren:

  • De prestaties van Direct Query worden sterk beïnvloed door de prestaties van de onderliggende gegevensbron.

  • Houd uw Direct Query-gegevensmodel zo eenvoudig mogelijk, aangezien complexe query's prestatieproblemen kunnen veroorzaken.

Zie Rechtstreeks toegang krijgen tot cloud-databases met Direct Query voor meer informatie over Direct Query.

Prestaties van gegevensmodel

Dit zijn indicatoren die van invloed kunnen zijn op de prestaties van een gegevensmodel. Elke is een best practice die de bruikbaarheid van de applicatie zal verbeteren.

Beste praktijken voor de prestaties van een gegevensmodel
Actie Beschrijving

Synthetische sleutels zijn verwijderd

Qlik Sense maakt synthetische sleutels als in twee of meer gegevenstabellen twee of meer velden gelijk zijn. Dit betekent dat er in het script of het gegevensmodel een fout aanwezig is. Zie Synthetische sleutels voor meer informatie over de diagnose van synthetische sleutels.

Cirkelreferenties die uit een gegevensmodel zijn verwijderd

Cirkelreferenties ontstaan wanneer twee velden over meer dan één koppeling beschikken. Qlik Sense probeert dit op te lossen door de koppeling met een van de tabellen te wijzigen. Echter, alle waarschuwingen voor cirkelreferenties moeten worden opgelost, zie Cirkelreferenties begrijpen en oplossen.

Juiste gedetailleerdheid van gegevens

U moet alleen noodzakelijke gegevens laden. Bijvoorbeeld: voor een groep gebruikers hoeven gegevens alleen te worden gesorteerd op week, maand en jaar. U kunt de geaggregeerde gegevens inladen of de gegevens binnen het load-script aggregeren om geheugen te besparen. Als een gebruiker gegevens met minder gedetailleerdheid wil visualiseren, kunt u ODAG of documentkoppeling gebruiken.

Gebruik indien mogelijk QVDs

Een QVD is een bestand dat een tabel bevat met gegevens die vanuit Qlik Sense zijn geëxporteerd. De bestandsindeling is geoptimaliseerd om snel gegevens in een script te kunnen lezen, maar is toch zeer compact. Gegevens uit een QVD-bestand worden 10-100 keer sneller gelezen dan gegevens uit een andere gegevensbron. Ga voor meer informatie naar: Werken met QVD-bestanden.

Optimaliseer QVD-bestanden voor laden

QVD-bestanden kunnen in twee modi worden gelezen: standaard (snel) en geoptimaliseerd (sneller). De geselecteerde modus wordt automatisch bepaald door de script-engine.

Geoptimaliseerd laden heeft enkele beperkingen. Het is mogelijk om de naam van velden te wijzigen, maar deze bewerkingen resulteren in standaard laden:

  • Alle transformaties op de geladen velden.
  • Het gebruik van een where-clausule waardoor Qlik Sense de records uitpakt.
  • Het gebruik van Toewijzen op een geladen veld.

Incrementeel laden toepassen

Als uw applicatie verbinding maakt met een grote hoeveelheid gegevens uit databases die continu worden bijgewerkt, kan het opnieuw laden van de gehele gegevensverzameling tijdrovend zijn. Gebruik in plaats daarvan incrementeel laden om nieuwe of gewijzigde records op te halen uit de database. Ga voor meer informatie naar Nieuwe en bijgewerkte records laden via incrementeel laden.

Snowflake -model wordt geconsolideerd

Als u een Snowflake-gegevensmodel hebt, kunt het aantal gegevenstabellen verminderen door enkele ervan samen te voegen met het prefix Join of andere toewijzingsvormen. Dit komt met name van pas bij grote feitentabellen. Een goede vuistregel is om gebruik te maken van één grote tabel. Ga voor meer informatie naar Wel of niet samenvoegen.

Tabellen met een klein aantal velden worden gedenormaliseerd

Als u twee tabellen met enkele velden hebt, kunt u deze samenvoegen om de prestaties te verbeteren. Ga voor meer informatie naar Tabellen samenvoegen met Join en Keep.

Gedenormaliseerde opzoektabellen met toegewezen ladingen

Gebruik het Join -prefix niet als u slechts één veld van een tabel aan een andere tabel wilt toevoegen. Gebruik de ApplyMap-opzoekfunctie, zie Niet samenvoegen - gebruik ApplyMap.

Tijdstempels die zijn verwijderd of ontkoppeld van een datumveld

Gegevensvelden kunnen ruimte innemen als er gebruik wordt gemaakt van een tijdstempel. De tekenreeks en het aantal afzonderlijke waarden zijn dan groter. Als nauwkeurigheid niet geboden is voor uw analyse, kunt u het tijdstempel bijvoorbeeld naar boven afronden op het hele uur met behulp van Timestamp(Floor(YourTimestamp,1/24)) of het tijdelement volledig verwijderen met behulp van Date(Floor(YourTimestamp)).

Als u gebruik wilt maken van de tijdstempel, kunt u deze van de datum loskoppelen. U kunt dezelfde Floor()-functie gebruiken en vervolgens een nieuw veld maken met de geëxtraheerde tijd door bijvoorbeeld het volgende toe te passen: Time(Frac(YourTimestamp)).

Niet-noodzakelijke velden uit gegevensmodel verwijderen

Laad alleen noodzakelijke velden in uw gegevensmodel. Vermijd het gebruik van Load * en SELECT. Behoud de volgende elementen:

  • Velden die noodzakelijk zijn voor uw analyse.
  • Velden die daadwerkelijk worden gebruikt in de applicatie.

Vermijd koppelingstabellen in het geval van grote hoeveelheden gegevens

Gebruik indien mogelijk koppelingstabellen. Als u echter te maken hebt met grote hoeveelheden gegevens, kunnen samengevoegde tabellen beter presteren dan koppelingstabellen.

Samengevoegde dimensies opdelen in nieuwe velden

U moet samengevoegde dimensies opdelen in afzonderlijke velden. Dit vermindert het aantal unieke waarden in uw velden. Dit is vergelijkbaar met de manier waarop tijdstempels kunnen worden geoptimaliseerd.

Gebruik indien mogelijk AutoNummering

U kunt een geoptimaliseerde lading maken door de gegevens eerst op te halen vanuit een QVD-bestand. Vervolgens kunt u de instructie AutoNummering gebruiken om de waarden naar symboolsleutels te converteren. Ga voor meer informatie naar AutoNumber.

Vermijd gegevenseilanden

Gegevenseilanden kunnen nuttig zijn, maar ze hebben meestal een negatieve invloed op de prestaties. Als u eilanden maakt voor selectiewaarden, gebruik dan variabelen.

QVD's worden opgeslagen op basis van incrementele tijdsperioden

U moet QVD in segmenten opslaan, zoals maandelijks. Deze kleinere maandelijkse QVD kan vervolgens veel verschillende applicaties ondersteunen die mogelijk niet alle gegevens nodig hebben.

Werkbladprestaties

Dit zijn best practices die de prestaties van werkbladen en visualisaties zullen verbeteren.

Best practices voor werkbladprestaties
Actie Beschrijving

De If()-functie wordt waar mogelijk vermeden

Als de If()-functie wordt gebruikt binnen een aggregatiefunctie, werkt deze op recordniveau en wordt deze vele malen geëvalueerd.

Als u bijvoorbeeld 1000 records in een aggregatie hebt, wordt een If()-voorwaarde 1000 keer geëvalueerd. Dit kan snel oplopen als u instructies nest. U kunt in plaats daarvan beter verzamelingenanalyse gebruiken. Een filter voor verzamelingenanalyse wordt toegepast vóór de aggregatie, wat resulteert in een snellere respons. Deze responsen kunnen ook in de cache worden opgeslagen via verzamelingenanalyse, wat bij If() niet mogelijk is. U kunt ook andere functies en wijzigingen in het gegevensmodel overwegen.

Velden uit verschillende tabellen binnen een aggregatietabel worden waar mogelijk vermeden.

Wanneer een aggregatie wordt geëvalueerd, doorloopt de berekening twee stappen:

  1. De eerste stap is het vinden van de relevante combinaties waarop de berekening moet worden uitgevoerd. Deze stap is single-threaded.

  2. De tweede stap is het uitvoeren van de berekening. Deze stap is multi-threaded.

Het single-threaded gedeelte kan de prestaties aanzienlijk beïnvloeden. Een voorbeeld is als u meerdere velden binnen de aggregatie hebt, bijvoorbeeld Sum(Quantity*ListPrice). Als Quantity zich in de feitentabel bevindt en ListPrice in de hoofdproductentabel, moet de engine eerst de twee tabellen samenvoegen om de combinaties te vinden voordat deze kan beginnen met het optellen van het product. Het samenvoegen is het single-threaded gedeelte en het optellen is multi-threaded. Als beide velden in dezelfde tabel worden gevonden, is er geen samenvoeging nodig en wordt de aggregatie aanzienlijk sneller geëvalueerd.

Aggr() en geneste Aggr()-functies worden minimaal gebruikt

De Aggr()-functie heeft grote invloed op de prestaties. Onjuist gebruik kan onnauwkeurige resultaten opleveren. Bijvoorbeeld in een tabel met dimensies die afwijken van de dimensies binnen de Aggr()-functie. Zie When should AGGR not be used? voor meer informatie.

Verzamelingenanalyse wordt waar mogelijk gebruikt

U kunt verzamelingenanalyse gebruiken om een set gegevenswaarden te definiëren die verschilt van de normale set die is gedefinieerd door de huidige selecties. Zie Set-analyse voor meer informatie.

Tekenreeksvergelijkingen worden waar mogelijk vermeden

Tekenreeksvergelijkingen zijn niet zo efficiënt als verzamelingenanalyse. U moet bijvoorbeeld Match(), MixMatch(), WildMatch() en Pick() vermijden. Maak vlaggen in het script of gebruik in plaats daarvan verzamelingenanalyse. Zie Voorwaardenfuncties en Performance of conditional aggregations voor meer informatie.

Berekeningsvoorwaarden worden gebruikt op objecten die intensieve berekeningen bevatten

U kunt visualisaties met veel records hebben wanneer er geen selecties zijn. Voeg als best practice berekeningsvoorwaarden toe aan objecten, zodat ze pas worden weergegeven nadat bepaalde selecties zijn gemaakt. Dit stopt het maken van zeer grote hypercubes. Bijvoorbeeld: GetSelectedCount([Country])=1 OR GetPossibleCount([Country])=1. In dit scenario wordt de visualisatie niet weergegeven tenzij de gebruiker één land selecteert, of andere selecties maakt waarbij slechts één land mogelijk is.

Metrieken worden waar mogelijk vooraf berekend in het script

Elke metriek die zich op het laagste granulariteitsniveau van het gegevensmodel bevindt, moet in het script worden berekend. Als u bijvoorbeeld in hetzelfde record in een tabel Sales en Cost hebt, kunt u de marge afleiden door Sales - Cost AS Margin te berekenen. U kunt ook andere waarden vooraf aggregeren als u weet dat ze niet variëren op basis van selectie, of dat ze gebonden zijn aan een ander granulariteitsniveau.

Tabellen hebben minder dan 15 kolommen en hebben berekeningsvoorwaarden

Een tabel met 15 kolommen kan als breed worden beschouwd. Als uw tabellen uit veel records bestaan, moet u berekende voorwaarden op het tabelobject gebruiken, zodat dit pas wordt weergegeven nadat aan bepaalde selecties of criteria is voldaan. Als uw tabel erg breed is, overweeg dan:

  • Meerdere kleinere tabellen te maken die voorwaardelijk worden weergegeven.
  • Methoden te gebruiken om kolommen voorwaardelijk weer te geven.
  • Uw tabellen te beperken tot alleen de velden die nodig zijn voor uw analyse.

Werkbladen hebben geen overmatig aantal objecten

Objecten worden berekend wanneer de gebruiker naar het werkblad navigeert. Elke keer dat een gebruiker een selectie maakt op dat werkblad, wordt elk object opnieuw berekend als die huidige status niet in de cache bestaat. Als u een werkblad met veel diagrammen hebt, moet de gebruiker bij bijna elke selectie wachten tot elk object is berekend. Dit legt een aanzienlijke belasting op de engine. Volg als best practice het Dashboard/Analysis/Reporting (DAR) -concept om een schone en minimale applicatie te ontwikkelen. Zie DAR methodology voor meer informatie.

Numerieke vlaggen worden in het script benut voor gebruik in verzamelingenanalyse

Verzamelingenanalyse met vlaggen kan efficiënter zijn dan het gebruik van tekenreeksvergelijkingen of vermenigvuldiging.

Masteritems of variabelen die worden gebruikt voor expressies

Masteritems maken slepen en neerzetten van beheerde metrieken mogelijk en garanderen dat expressies in de cache worden opgeslagen. Bijvoorbeeld, Sum(Sales) is anders dan SUM(Sales). Expressies worden in de cache opgeslagen op basis van spelling en hoofdlettergebruik, en moeten woordelijk overeenkomen om opnieuw te kunnen worden gebruikt.

Prestaties van gegevens laden

Het optimaliseren van het laden van gegevens is belangrijk voor een naadloze ervaring die reageert wanneer u werkt met applicaties in Qlik Cloud. Deze sectie belicht factoren die de prestaties beïnvloeden en biedt richtlijnen over hoe u prestatieproblemen kunt voorkomen.

Qlik Gegevensgateway - Directe toegang

Wanneer u Qlik Gegevensgateway - Directe toegang gebruikt om gegevens opnieuw in uw applicatie te laden, beïnvloeden de volgende factoren de prestaties:

  • Verbindingssnelheid en latentie tussen de machine die de Data Gateway host en de database.

  • Verbindingssnelheid en latentie tussen de machine die de Data Gateway host en uw Qlik Cloud tenant. Idealiter host u de Data Gateway in dezelfde regio als uw Qlik Cloud tenant voor verbeterde prestaties.

Databaseopslag

Trage opslagverbindingen kunnen de herlaadtijden verlengen. Houd rekening met het volgende voor databases die on-premises of in de cloud worden gehost:

  • On-premises: Als uw database on-premises is en een server deelt met andere applicaties, kunnen de prestaties ervan worden beïnvloed door de activiteiten van deze andere applicaties.

  • Cloud: Bij de juiste dimensionering bieden clouddatabases doorgaans betere prestaties dan on-premise databases. Kies voor optimale resultaten een regio voor uw cloudopslag die zich dicht bij uw Qlik Cloud tenant bevindt.

Was deze pagina nuttig?

Als u problemen ervaart op deze pagina of de inhoud onjuist is – een tikfout, een ontbrekende stap of een technische fout – laat het ons weten!