Microsofts Azure-plattform gir kunder muligheten til å velge mellom ulike nivåer av tjenester for å oppnå høyere ytelse til en høyere pris. Når det gjelder lagring på Azure Storage Accounts, koster for eksempel «Premium»-modellen rundt 10 ganger så mye som «Standard»-modellen. Men i noen tilfelle vil det faktisk ikke gjøre noen forskjell for ytelsen om man velger den dyre eller den billige modellen. Dette viser resultatene av en rekke performance tuning-forsøk som ble utført ved Altros fagsamling.
I moderne cloud data-plattformer er lagring og prosesseringskraft adskilte tjenester, som kan skaleres uavhengig av hverandre. Vi lurte på om en høyere ytelse på lagringstjenesten kunne gi oss bedre ytelse målt mot samme prosesseringskraft, og satte oss for å teste dette.
Vi utførte testene i et nytt Synapse Workspace med to ulike storage accounts, en Premium og en Standard. Deretter kopierte vi et kjent datasett til begge storage accounts i delta-format, opprettet en Lake-database i Synapse og registrerte tabellene til denne databasen fra de to forskjellige storage accountene. Dette skulle benchmarkes mot Serverless SQL-endepunkt.
Først testet vi ytelsen ved å gjøre noen enkle SQL-aggregatspørringer mot datasettet i SSMS. Selv om vi merket oss at det ikke var noen monitorerbar forskjell mellom de to kildene, la vi merke til at query runtime for samme spørring kunne variere ganske mye mot samme tabell.
Et godt use case for behov for god ytelse mot SQL er med DirectQuery fra Power BI. Vi lagde derfor en datamodell i Power BI og koblet på begge tabellene med DirectQuery. Vi satt opp identiske measures i Power BI datasettet mot de to kildetabellene og brukte performance testing i DAX Studio mot Power BI-modellen etter å ha publisert modellen på Power BI Portal.
Testresultatene viste overraskende ikke noen forskjell mellom bruk av Standard og Premium storage accounts, når de ble kjørt mange ganger og sammenlignet i forhold til median, gjennomsnitt og kvartiler. Standard var like ofte raskere enn Premium som omvendt, og i begge tilfeller var det en del variasjon i resultatene.
Det kan med andre ord være viktig å eksperimentere og teste med ulike lagringsløsninger for å kunne optimere kostnader og ytelse på et informert grunnlag. Det dyreste er ikke alltid det beste, så det kan ofte spares penger uten at det går på bekostning av ytelse.
Det er imidlertid to forbehold å være klar over.
For det første kan det fortsatt være andre gode grunner til å bruke Premium storage account. For eksempel er latency vanligvis lavere hvis du ikke bruker et serverløst SQL-endepunkt for å koble til. Så hvis det brukes til å levere data for live-tjenester, kan Premium-modellen være verdifull i seg selv.
For det andre kan forskjellen mellom Standard og Premium avhenge av størrelsen på datasettet, kompleksiteten til spørringene, den generelle konfigurasjonen av dataplattformen, avstanden til datasenteret og mange andre ting. Det er derfor viktig å gjøre grundige tester og vurdere flere alternativer før man tar beslutninger om ytelse og konfigurasjon.
I vårt tilfelle var trolig flaskehalsen selve SQL-endepunktet som ligger mellom oss og Storage accounten og ikke storage accounten i seg selv. Neste gang kanskje har vi lyst å benchmarke Premium vs. Standard storage accounts i skriveoperasjoner til deltatabeller i Spark Notebooks.
Godt skrevet Eirik :) /Semjon