Een paar controles die je zou kunnen uitvoeren staan hieronder.
Omvang
Een paar regels om de omvang vast te stellen:
- Hoeveel administratie(s) gaat het om?
- Hoeveel regels zitten er in de administratie(s)?
- Hoeveel werkgeheugen heeft het verwerkende apparaat?
SQL Server als oorzaak uitsluiten
Hoe lang duurt deze query:
create or replace table transactionlinesincremental@InMemoryStorage
as
select *
from transactionlinesincremental@eol
Is die sneller klaar? Alhoewel de andere laadactie ik vermoed ook richting SQL Server gaat, is het handig om SQL Server (batchladen of niet) uit te sluiten. De in-memory storage driver is in principe meteen klaar.
Werkgeheugen uitsluiten
Hoeveel geheugen heeft het apparaat dat je gebruikt?
Een statement op de sync API’s zoals
create or replace table transactionlinesincremental@sqlserver
as
select *
from transactionlinesincremental@eol
zal eerst alle gegevens moeten ontsleutelen en decomprimeren, daarna de mutaties verwerken, daarna de nieuwe situatie versleuteld vastleggen en pas daarna beginnen met resultaten terug te geven, die dan vrijwel meteen weggeschreven worden.
In tegenstelling daartoe zal een statement op TransactionLinesBulk
:
create or replace table transactionlinesincremental@sqlserver
as
select *
from transactionlinesbulk@eol
meteen beginnen met lezen uit de Exact Online API’s en elke paar seconden al (bijvoorbeeld) een 3.000 records wegschrijven in SQL Server.
Het maximale geheugenbeslag van het kopieren van TransactionLinesBulk
is een paar MB door dit streaming gedrag, terwijl het maximale geheugenbeslag van TransactionLinesIncremental
rustig een paar KB per regel kan zijn door het batchmatige gedrag.
Een miljoen regels van TransactionLinesIncremental
vragen dan al de nodige gigabytes. Het exacte geheugenbeslag is moeilijk te bepalen zonder de query te draaien; Invantive SQL ontdubbelt bijvoorbeeld vaak terugkomende teksten om het geheugengebruik te beperken.
Zodra het geheugengebruik te groot wordt, zal paging/swapping optreden en mogelijk “trashing” wat de looptijd enorm kan verlengen.
Processor
Er zijn in principe tussen de twee varianten geen grote verschillen in rekentijd. Het versleutelen en ontsleutelen zal de benodigde rekentijd misschien verdrievoudigen, maar ik zie dat niet tot uren extra rekentijd leiden. De versleuteling is redelijk efficient; vergelijkbaar met een VPN-tunnel.