Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of mappen te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen om mappen te wijzigen.
In dit artikel wordt uitgelegd hoe u kosten voor een serverloze SQL-pool in Azure Synapse Analytics kunt schatten en beheren:
- Geschatte hoeveelheid gegevens die worden verwerkt voordat een query wordt uitgegeven
- Kostenbeheerfunctie gebruiken om het budget in te stellen
Begrijp dat de kosten voor een serverloze SQL-pool in Azure Synapse Analytics slechts een deel van de maandelijkse kosten in uw Azure-factuur zijn. Als u andere Azure-services gebruikt, wordt u gefactureerd voor alle Azure-services en -resources die worden gebruikt in uw Azure-abonnement, inclusief de services van derden. In dit artikel wordt uitgelegd hoe u kosten voor een serverloze SQL-pool in Azure Synapse Analytics plant en beheert.
Verwerkte gegevens
Gegevens die worden verwerkt , zijn de hoeveelheid gegevens die het systeem tijdelijk opslaat terwijl een query wordt uitgevoerd. De verwerkte gegevens bestaan uit de volgende hoeveelheden:
- Hoeveelheid gegevens die uit de opslag worden gelezen. Dit bedrag omvat:
- Gegevens die worden gelezen tijdens het lezen van gegevens.
- Gegevens die worden gelezen tijdens het lezen van metagegevens (voor bestandsindelingen die metagegevens bevatten, zoals Parquet).
- Hoeveelheid gegevens in tussenliggende resultaten. Deze gegevens worden overgebracht tussen knooppunten terwijl de query wordt uitgevoerd. Het bevat de gegevensoverdracht naar uw eindpunt, in een niet-gecomprimeerde indeling.
- Hoeveelheid gegevens die naar de opslag zijn geschreven. Als u CETAS gebruikt om uw resultatenset te exporteren naar de opslag, wordt de hoeveelheid gegevens die wordt weggeschreven, toegevoegd aan de hoeveelheid gegevens die voor het SELECT-gedeelte van CETAS wordt verwerkt.
Het lezen van bestanden uit opslag is zeer geoptimaliseerd. Het proces maakt gebruik van:
- Prefetching, which might add some overhead to the amount of data read. Als een query een heel bestand leest, is er geen overhead. Als een bestand gedeeltelijk wordt gelezen, zoals in TOP N-query's, wordt er iets meer gegevens gelezen door gebruik te maken van prefetching.
- Een geoptimaliseerde parser voor door komma's gescheiden waarden (CSV). Als u PARSER_VERSION='2.0' gebruikt om CSV-bestanden te lezen, nemen de hoeveelheden gegevens die uit de opslag zijn gelezen enigszins toe. Een geoptimaliseerde CSV-parser leest bestanden parallel, in segmenten van gelijke grootte. Chunks don't necessarily contain whole rows. Om ervoor te zorgen dat alle rijen worden geparseerd, leest de geoptimaliseerde CSV-parser ook kleine fragmenten van aangrenzende segmenten. Dit proces voegt een kleine hoeveelheid overhead toe.
Statistiek
De queryoptimalisatie voor serverloze SQL-pools is afhankelijk van statistieken om optimale uitvoeringsplannen voor query's te genereren. U kunt handmatig statistieken maken. Anders worden deze automatisch door een serverloze SQL-pool gemaakt. In beide gevallen worden statistieken gemaakt door een afzonderlijke query uit te voeren die een specifieke kolom retourneert met een opgegeven steekproeffrequentie. Deze query heeft een gekoppelde hoeveelheid verwerkte gegevens.
Als u dezelfde of een andere query uitvoert die zou profiteren van gemaakte statistieken, worden statistieken indien mogelijk opnieuw gebruikt. Er zijn geen aanvullende gegevens verwerkt voor het maken van statistieken.
Wanneer statistieken worden gemaakt voor een Parquet-kolom, wordt alleen de relevante kolom gelezen uit bestanden. Wanneer statistieken worden gemaakt voor een CSV-kolom, worden hele bestanden gelezen en geparseerd.
Rounding
The amount of data processed is rounded up to the nearest MB per query. Elke query heeft minimaal 10 MB aan verwerkte gegevens.
What data processed doesn't include
- Metagegevens op serverniveau (zoals aanmeldingen, functies en referenties op serverniveau).
- Databases die u in uw eindpunt maakt. Deze databases bevatten alleen metagegevens (zoals gebruikers, rollen, schema's, weergaven, inline tabelwaardefuncties [TVF's], opgeslagen procedures, referenties met databasebereik, externe gegevensbronnen, externe bestandsindelingen en externe tabellen).
- Als u schemadeductie gebruikt, worden bestandsfragmenten gelezen om kolomnamen en gegevenstypen af te leiden en wordt de hoeveelheid gegevensgelezen toegevoegd aan de hoeveelheid verwerkte gegevens.
- DDL-instructies (Data Definition Language), met uitzondering van de instructie CREATE STATISTICS omdat er gegevens uit de opslag worden verwerkt op basis van het opgegeven steekproefpercentage.
- Query's met alleen metagegevens.
De hoeveelheid verwerkte gegevens verminderen
U kunt de hoeveelheid verwerkte gegevens per query optimaliseren en de prestaties verbeteren door uw gegevens te partitioneren en te converteren naar een gecomprimeerde indeling op basis van kolommen, zoals Parquet.
Voorbeelden
Stel dat er drie tabellen zijn.
- De population_csv tabel wordt ondersteund door 5 TB CSV-bestanden. De bestanden zijn ingedeeld in vijf kolommen met gelijke grootte.
- De population_parquet tabel bevat dezelfde gegevens als de population_csv tabel. Het wordt ondersteund door 1 TB Parquet-bestanden. This table is smaller than the previous one because data is compressed in Parquet format.
- De very_small_csv tabel wordt ondersteund door 100 kB CSV-bestanden.
Query 1: SELECT SUM(population) FROM population_csv
Met deze query worden hele bestanden gelezen en geparseerd om waarden op te halen voor de populatiekolom. Knooppunten verwerken fragmenten van deze tabel en de populatiesom voor elk fragment wordt overgedragen tussen knooppunten. De uiteindelijke som wordt overgebracht naar uw eindpunt.
This query processes 5 TB of data plus a small amount overhead for transferring sums of fragments.
Query 2: SELECT SUM(population) FROM population_parquet
Wanneer u een query uitvoert op gecomprimeerde en kolomgebaseerde formaten zoals Parquet, worden er minder gegevens gelezen dan in query 1. U ziet dit resultaat omdat een serverloze SQL-pool één gecomprimeerde kolom leest in plaats van het hele bestand. In this case, 0.2 TB is read. (Vijf kolommen met gelijke grootte zijn elk 0,2 TB.) Knooppunten verwerken fragmenten van deze tabel en de populatiesom voor elk fragment wordt overgedragen tussen knooppunten. De uiteindelijke som wordt overgebracht naar uw eindpunt.
Deze query verwerkt 0,2 TB plus een kleine hoeveelheid overhead voor het overdragen van sommen van fragmenten.
Query 3: SELECT * FROM population_parquet
Deze query leest alle kolommen en draagt alle gegevens over in een niet-gecomprimeerde indeling. Als de compressie-indeling 5:1 is, verwerkt de query 6 TB omdat deze 1 TB leest en 5 TB aan niet-gecomprimeerde gegevens overdraagt.
Query 4: SELECT COUNT(*) FROM very_small_csv
Met deze query worden hele bestanden gelezen. De totale grootte van bestanden in opslag voor deze tabel is 100 kB. Knooppunten verwerken fragmenten van deze tabel en de som voor elk fragment wordt overgebracht tussen knooppunten. De uiteindelijke som wordt overgebracht naar uw eindpunt.
Deze query verwerkt iets meer dan 100 kB aan gegevens. De hoeveelheid gegevens die voor deze query worden verwerkt, wordt afgerond op 10 MB, zoals opgegeven in de sectie Afronding van dit artikel.
Kostenbeheer
Met de functie Kostenbeheer in een serverloze SQL-pool kunt u het budget instellen voor de hoeveelheid verwerkte gegevens. You can set the budget in TB of data processed for a day, week, and month. Tegelijkertijd kunt u een of meer budgetten instellen. Als u kostenbeheer wilt configureren voor een serverloze SQL-pool, kunt u Synapse Studio of T-SQL gebruiken.
Kostenbeheer configureren voor een serverloze SQL-pool in Synapse Studio
Als u kostenbeheer wilt configureren voor een serverloze SQL-pool in Synapse Studio, gaat u naar het item Beheren in het menu aan de linkerkant en selecteert u het SQL-poolitem onder Analytics-pools. Wanneer u de muisaanwijzer over een serverloze SQL-pool beweegt, ziet u een pictogram voor kostenbeheer. Klik op dit pictogram.
Zodra u op het pictogram kostenbeheer klikt, wordt er een zijbalk weergegeven:
To set one or more budgets, first click on Enable radio button for a budget you want to set, than enter the integer value in the text box. Eenheid voor de waarde is TB's. Zodra u de budgetten hebt geconfigureerd die u wilde, klikt u onderaan de zijbalk op de knop Toepassen. Dat is het, je budget is nu ingesteld.
Kostenbeheer configureren voor een serverloze SQL-pool in T-SQL
Als u kostenbeheer wilt configureren voor een serverloze SQL-pool in T-SQL, moet u een of meer van de volgende opgeslagen procedures uitvoeren.
sp_set_data_processed_limit
@type = N'daily',
@limit_tb = 1
sp_set_data_processed_limit
@type= N'weekly',
@limit_tb = 2
sp_set_data_processed_limit
@type= N'monthly',
@limit_tb = 3334
Voer de volgende T-SQL-instructie uit om de huidige configuratie te zien:
SELECT * FROM sys.configurations
WHERE name like 'Data processed %';
Voer de volgende T-SQL-instructie uit om te zien hoeveel gegevens er zijn verwerkt tijdens de huidige dag, week of maand:
SELECT * FROM sys.dm_external_data_processed
De limieten overschrijden die zijn gedefinieerd in het kostenbeheer
Als een limiet wordt overschreden tijdens de uitvoering van de query, wordt de query niet beëindigd.
Wanneer de limiet wordt overschreden, wordt nieuwe query geweigerd met het foutbericht met details over de periode, gedefinieerde limiet voor die periode en gegevens die voor die periode worden verwerkt. Als er bijvoorbeeld een nieuwe query wordt uitgevoerd, waarbij de wekelijkse limiet is ingesteld op 1 TB en deze is overschreden, wordt het foutbericht weergegeven:
Query is rejected because SQL Serverless budget limit for a period is exceeded. (Period = Weekly: Limit = 1 TB, Data processed = 1 TB))
Volgende stappen
Zie Best practices voor serverloze SQL-pools voor meer informatie over het optimaliseren van uw query's voor betere prestaties.