Del via


Brugerdefinerede SQL-puljer

Gælder for:✅ SQL-analyseendpoint og Warehouse i Microsoft Fabric

Brugerdefinerede SQL-puljer giver administratorer mere kontrol over, hvordan backend-beregningsressourcer tildeles deres lager og SQL-analyseendepunkt i et arbejdsområde.

Diagram over SQL-motoren med brugerdefinerede SQL-pools.

Fabric Data Warehouse tilbyder autonom arbejdsbelastningsstyring, der opdeler beregningsressourcer i interne "SQL-pools", der skalerer uafhængigt baseret på efterspørgsel.

Som standard er isolationsgrænserne indlæsning (ikke-sætningstyperSELECT ) og forespørgselsbehandling (SELECT sætninger). Med brugerdefinerede SQL-puljer kan administratorer:

  • Ændr antallet af isolationsgrænser (tilføj flere brugerdefinerede SQL-pools).
  • Opret applikationsnavn-specifikke tilpassede arbejdsbelastningsklassifikationer.
  • Kontroller ressourceallokering for hver pulje via en maksimal ressourceprocent.

Brugerdefinerede SQL-pools brugstilfælde

Brugerdefinerede SQL-pools har to primære anvendelsestilfælde: beskyttelse af arbejdsbelastninger mod ressourcekonkurrence og beskyttelse mod Fabric-kapacitetsbegrænsning ved højt forbrug.

Konkurrerende arbejdsbelastninger med de autonome arbejdsbelastningspuljer

Dette scenarie gælder, når forskellige arbejdsbelastninger konkurrerer om ressourcer, hvilket får kritiske arbejdsbelastninger til at misse præstationsmålene.

eksempel på scenarie

  • En enterprise-rapporteringsarbejdsbyrde præsterer suboptimalt, når adhoc-brugerforespørgsler køres fra SQL-forespørgselseditoren i Fabric-portalen.

Anbefalet fremgangsmåde

  • Del disse arbejdsbelastninger over to separate brugerdefinerede SQL-puljer.
  • Alloker en større procentdel af ressourcerne til poolen, der betjener virksomhedens rapporteringsapplikation, og sørg for, at flere ressourcer er tilgængelige for den forretningskritiske applikation.

Kapacitetsbegrænsning på grund af højt forbrug

Dette scenarie gælder, når højt forbrug af Fabric-kapacitet forårsager throttling, som påvirker den samlede lagerpræstation.

eksempel på scenarie

Anbefalet fremgangsmåde

  • Reducer den samlede ressourceprocent, der er tildelt det berørte lager.
  • Overvåg om denne ændring reducerer forespørgselsbegrænsning og forbedrer den samlede ydeevne.

Forskelle mellem autonom arbejdsbelastningsstyring og brugerdefinerede SQL-pools

Emne Autonom arbejdsbelastningsstyring Brugerdefinerede SQL-puljer
Konfiguration Ingen (direkte ud af boksen) - Webbrugerflade
- API'er
Tilladelser Ikke tilgængelig Administrator af arbejdsområde
Omfanget Workspace - inkluderer både warehouse og SQL analytics-endpoint Workspace - inkluderer både warehouse og SQL analytics-endpoint
Klassifikationsmetode Sætningstype (SELECT eller andet) - Applikationsnavn
- Applikationsnavn, regulært udtryk
Måleenhed Ikke tilgængelig Procentdel af de samlede backend-noder
SQL-puljer SELECT eller andre Brugerdefineret allokering
Kapacitet, der kan sprænges Administreres af Fabric (op til 12x pr. SQL-pool, 24x i alt) Brugerdefineret baseret på procentdelen af de allokerede backend-noder. Den samlede mængde ressourcer er stadig 24x.

Kapacitet, der kan sprænges

Brugerdefinerede SQL-puljer gør det muligt for en administrator at konfigurere den maksimale ressourceprocent som mængden af beregningsressourcer, der kan allokeres. Bursting-faktoren for kapacitets-SKU-størrelsen vil blive anvendt og brugt af den procentdel, der er angivet for hver pool.

Klassificeringer

En klassifikator er en attribut i en SQL-forespørgsel, der informerer systemet om, hvordan det skal dirigeres til den relevante SQL-pool.

Fabric Data Warehouse tilbyder tre måder at klassificere forespørgsler på:

Klassifikatortype Beskrivelse Konfiguration
Udsagnstype Klassificerer forespørgsler i enten SELECT (forespørgsel) eller ikke- (alle DML, DDL-sætningerSELECT ) Kun autonom arbejdsbelastningsstyring
Applikationsnavn - App- (eller programnavn) brugt i forbindelsesstrengen, når der forbindes til Fabric Warehouse eller SQL Analytics Endpoint.
- Understøtter flere applikationsnavne pr. brugerdefineret SQL-pool
- 128 tegn eller færre
- Gensidigt udelukkende mellem brugerdefinerede SQL-pools
Kun brugerdefinerede SQL-pools
Applikationsnavn regex - Regulært udtryk, der bruges til at matche værdien for applikationsnavnet.
- Kun den første værdi i listen evalueres for regulært udtryk
Kun brugerdefinerede SQL-pools

Retningslinjer:

  • Kun én klassifikatortype kan bruges pr. arbejdsområde. Alle brugerdefinerede SQL-puljer i et enkelt arbejdsområde skal bruge den samme klassifikator.
  • I tilfælde af en applikationsnavns regulær udtryksklassifikator, hvis en anmodning opfylder to eller flere klassifikationer, er udvælgelsen af en brugerdefineret SQL-pulje tilfældig, og der er ingen prioriteringskriterier.

Tilladelser

  • Medlemmer af administrator-arbejdsområdet kan aktivere eller deaktivere brugerdefinerede SQL-pools for et arbejdsområde.
  • Medlemmer af administrator-arbejdsområdet kan opdatere de brugerdefinerede SQL-poolkonfigurationer.

Konfigurer brugerdefinerede SQL-pools

Du kan konfigurere brugerdefinerede SQL-pools i Fabric Data Warehouse via Fabric-portalen eller via API-kald.

Skærm

Du kan se applikationsnavnet og SQL-poolen, der blev registreret for en forespørgsel, i felterne program_namesql_pool_name i systemvisningen queryinsights.exec_requests_history .

Du kan bruge dem program_name som applikationsnavn i en klassifikator, eller i et regulært udtryksmønster for en applikationsnavnsklassifikator.

For eksempel, for at finde alle og program_name de tilsvarende sql_pool_name i nyere historie:

SELECT DISTINCT 
         program_name
        ,sql_pool_name
FROM queryinsights.exec_requests_history;

Du kan identificere, hvilke SQL-pools der er under pres, ved at forespørge visningen queryinsights.sql_pool_insights .

For eksempel kan du finde perioder, hvor en pool har været under pres i den forgangne uge.

SELECT [timestamp]
        ,sql_pool_name
        ,max_resource_percentage
        ,is_pool_under_pressure
FROM queryinsights.sql_pool_insights
WHERE is_pool_under_pressure = 1
AND [timestamp] > DATEADD(WEEK, -1, GETDATE())
ORDER BY [timestamp] DESC, sql_pool_name;

For at aggregere program_name værdier ved hjælp af nogle forespørgselsomkostningsmålinger kan du bruge følgende forespørgsel:

SELECT 
    program_name,
    sql_pool_name,
    [CPU] = SUM(allocated_cpu_time_ms), 
    [Disk] = SUM(data_scanned_disk_mb), 
    [Memory] = SUM(data_scanned_memory_mb), 
    [Remote storage] = SUM(data_scanned_remote_storage_mb)
FROM queryinsights.exec_requests_history
GROUP BY program_name, sql_pool_name
ORDER BY [CPU] desc, [Disk] desc, [Memory] desc, [Remote storage] desc;

Begrænsninger

  • Et arbejdsområde skal indeholde et eller flere lagre eller SQL-analyseendepunkter, før API'erne kan køres.
  • Du kan oprette op til otte brugerdefinerede SQL-pools pr. arbejdsområde.
  • Når en brugerdefineret SQL-pool fjernes, mens en forespørgsel kører i poolen, vil forespørgslen fejle med en besked om, at Request to perform an external distributed computation has failed with error "Query canceled by user." Ændring af en tilpasset SQL-pool ikke forårsager forespørgselsfejl.

Ændringer i stofkapacitetsstørrelse

Hvert arbejdsområde har en kapacitet med tilknyttede kapacitetsenheder (CU'er), baseret på den SKU, du køber. Den burstbare kapacitet for brugerdefinerede SQL-pools afhænger af SKU-størrelsen. Så når du ændrer kapaciteten, påvirker du den maksimale mængde ressourcer for hver brugerdefineret SQL-pool.

Når du ændrer kapacitets-SKU-størrelsen eller tildeler en anden kapacitet til et arbejdsområde, skalerer brugerdefinerede SQL-pools automatisk til den nye SKU-størrelse, hvis de er aktiveret.

Hvis nedskalering tvinger en SQL-pool til nul tildelte noder, vises følgende fejl under kørsel: "Den tildelte SQL-pool for denne forespørgsel har ingen ressourcer og skal omkonfigureres." En administrator skal omkonfigurere brugerdefinerede SQL-pools for at fjerne denne fejl.

Næste trin