Performance van GetConnector optimaliseren
Voer onderstaande controles uit om de performance te verbeteren. Zie ook Melding als de datalimiet bereikt is.
1. Maak een vast filter aan
Maak een vast filter aan in de GetConnector in Profit. Dit filter wordt altijd uitgevoerd bij een aanroep, zodat er minder data in één keer wordt opgehaald. Je kan bijvoorbeeld filteren op het huidige jaar.
Probeer snelfilters te vermijden. Een snelfilter is namelijk langzamer dan een vast filter.
Voorbeeld:
Bijvoorbeeld =AFAS Software B.V. is een stuk sneller dan het snelfilter Sf AFAS (zoekt op alle namen die ‘AFAS’ bevatten).
2. Alleen gewijzigde data ophalen
Controleer of je ook alleen de gewijzigde data kan ophalen. Heb je elke keer alle mutaties nodig, of alleen de gegevens die gewijzigd zijn? Je kan via een GetConnector gegevens opvragen die op of na een bepaalde datum en tijd zijn toegevoegd of gewijzigd. Je doet dit door te filteren op het veld waarin de wijzigingsdatum van de mutatie staat.
Meer informatie hierover lees je in het artikel Gewijzigde gegevens opvragen met een GetConnector
3. Haal de gegevens op in delen via Skip & Take
Gebruik bij het ophalen van veel informatie de opties Skip & Take en zet deze instelling niet op -1/-1, maar bijvoorbeeld op 0/50. Met deze instelling kun je gegevens in delen ophalen. Als het ophalen van gegevens te lang duurt kan je dit voorkomen door de gegevens bijvoorbeeld altijd per 1000 regels op te halen. De grootte van de pakketjes data is afhankelijk van het soort gegevens dat je ophaalt.
Let op:
Probeer eerst te werken met een vast filter in de GetConnector die je instelt in Profit en met een variabele filter in je aanroep. Dit werkt beter voor het ophalen van data en het sorteren daarvan dan met de Skip/Take methode.
Gebruik altijd een sortering bij het uitvoeren van een opdracht met skip/take. Sorteer bij voorkeur op een uniek veld, zoals factuurnummer of medewerkerscode, of een combinatie van velden.
Meer informatie:
- GetConnector XML Skip/Take, sortering en outputformaat
- GetConnector JSON Skip/Take, sortering en outputformaat
4. Formaat van velden
Je kunt bij elk veld in de gegevensverzameling een bepaald formaat instellen. Hierdoor kun je een tekstveld bijvoorbeeld omzetten in hoofdletters. Probeer dit zoveel mogelijk te beperken, want hierdoor moet bij elke GetConnector-call het veld worden omgezet in het gewenste format. Hierdoor kan de performance bij veel regels nadelig worden beïnvloed.
5. Afbeeldingen importeren of ophalen
Afbeeldingen importeren via een connector vergt extra performance. Haal overbodige afbeeldingen weg zodat de performance verbeterd kan worden.
Voor het optimaal ophalen van afbeeldingen gebruik je de ImageConnector.
6. Functievelden
Gegevensverzameling bevatten vaak functievelden, dit zijn velden die niet als zodanig in de database zitten, maar die worden berekend. Dit betekent dat voor elke regel in het resultaat een berekening gemaakt moet worden. Dit kan de performance nadelig beïnvloeden.
7. Velden toevoegen aan de gegevensverzameling
Probeer zo ''hoog'' mogelijk velden uit de gegevensverzameling te halen. Hoe dieper je de gegevensverzameling in gaat, des te langer het zal duren voordat een resultaat opgehaald kan worden.
8. Velden uit verschillende tabellen in dezelfde gegevensverzameling
Door meerdere tabellen in dezelfde gegevensverzameling te zetten moet de database deze op de achtergrond combineren (joinen). Hierdoor is de database langer bezig met het maken van de aanroep dan bij gegevensverzamelingen die alleen uit dezelfde tabel komen. Wees kritisch welke velden je selecteert en waar deze vandaan komen.
9. Filters op vrije velden
Als er een vrij veld wordt toegevoegd aan de database wordt hier geen index op gemaakt. Dit betekent dat bij het filteren op een vrij veld de database extra performance moet leveren om de sortering ervan te generen. Filteren op vrije velden wordt daarom ook niet geadviseerd.
10. Parallel uitvoeren van opdrachten
Als er door meerdere processen een GetConnector wordt aangeroepen kan hierdoor de aanroep mis gaan. De database blokkeert tijdens de aanroep de regel die wordt opgehaald, als er andere processen ook deze regel aanroepen gaat dit fout.
Plan dan ook de aanroepen niet allemaal op 1 moment zodat er geen blokkeringen kunnen ontstaan. Kijk ook goed welke gegevensverzamelingen worden aangeroepen per keer, en of er niet een aanroep wordt gedaan op dezelfde gegevens.
Er zijn maximaal zes parallelle aanroepen toegestaan, neem hierbij de bovenstaande regels uiteraard in acht,