Jaa


Fabric-tietovaraston tilastotiedot

Koskee: SQL-analytiikan päätepiste ja Microsoft Fabric -varasto

Microsoft Fabricin varasto käyttää kyselymoduulia tietyn SQL-kyselyn suoritussuunnitelman luomiseen. Kun lähetät kyselyn, kyselyn optimoija yrittää luetteloida kaikki mahdolliset palvelupaketit ja valita tehokkaimman ehdokkaan. Määrittääkseen, mikä suunnitelma edellyttäisi pienintä yleiskustannuksia (I/O, suoritin, muisti), moduulin on pystyttävä arvioimaan kullakin operaattorilla mahdollisesti käsiteltävän työn tai rivien määrä. Kunkin palvelupaketin kustannusten perusteella se valitsee sitten sen, jossa on pienin arvioitu työmäärä. Tilastotiedot ovat objekteja, jotka sisältävät merkityksellisiä tietoja tiedoistasi, jotta kyselyoptimointi voi arvioida nämä kustannukset.

Tilastotietojen hyödyntäminen

Jotta kyselyiden suorituskyky olisi optimaalinen, on tärkeää saada tarkat tilastotiedot. Microsoft Fabric tukee tällä hetkellä seuraavia polkuja asianmukaisten ja ajantasaisten tilastotietojen tarjoamiseen:

  • Käyttäjän määrittämät tilastotiedot
  • Automaattiset tilastotiedot
    • Moduuli luo ja ylläpitää tilastotietoja automaattisesti kyselyn aikana

Manuaaliset tilastotiedot kaikille taulukoille

Microsoft Fabric tarjoaa perinteisen vaihtoehdon tilastojen terveyden ylläpitoon. Käyttäjät voivat luoda, päivittää ja pudottaa histogrammipohjaisia yksisarakkeisia tilastotietoja tilastotietojen luonnin tilastotietojen, PÄIVITYSTILASTOJEN ja PUDOTUSTILASTOJEN avulla. Käyttäjät voivat myös tarkastella histogrammipohjaisten yksisarakkeisten tilastotietojen sisältöä DBCC SHOW_STATISTICS. Tällä hetkellä näiden lausekkeiden rajoitettua versiota tuetaan.

  • Jos luot tilastotietoja manuaalisesti, harkitse sellaisten tilastotietojen käyttöä, joita käytetään paljon kyselyn kuormituksessa (erityisesti RYHMÄN BY:t, ORDER BY:t, suodattimet ja JOIN-suodattimet).
  • Harkitse saraketason tilastotietojen päivittämistä säännöllisesti sen jälkeen, kun tiedot ovat muuttuneet, mikä muuttaa huomattavasti rivimäärää tai tietojen jakautumista.

Esimerkkejä manuaalisten tilastojen ylläpidosta

Tilastotietojen luominen taulukosta dbo.DimCustomer kaikkien sarakkeen CustomerKeyrivien perusteella:

CREATE STATISTICS DimCustomer_CustomerKey_FullScan
ON dbo.DimCustomer (CustomerKey) WITH FULLSCAN;

Tilasto-objektin DimCustomer_CustomerKey_FullScanmanuaalinen päivittäminen:

UPDATE STATISTICS dbo.DimCustomer (DimCustomer_CustomerKey_FullScan) WITH FULLSCAN;  

Tilasto-objektin tietojen näyttäminen:

DBCC SHOW_STATISTICS ("dbo.DimCustomer", "DimCustomer_CustomerKey_FullScan");

Näytä vain tilasto-objektin histogrammitiedot seuraavasti:

DBCC SHOW_STATISTICS ("dbo.DimCustomer", "DimCustomer_CustomerKey_FullScan") WITH HISTOGRAM;

Tilasto-objektin DimCustomer_CustomerKey_FullScanmanuaalinen pudottaminen:

DROP STATISTICS dbo.DimCustomer.DimCustomer_CustomerKey_FullScan;

Seuraavien T-SQL-objektien avulla voidaan myös tarkistaa sekä manuaalisesti luodut että automaattisesti luodut tilastotiedot Microsoft Fabricissa:

Kyselyn automaattiset tilastotiedot

Aina, kun teet kyselyn ja kyselyoptimointi edellyttää tilastotietoja suunnitelman tutkimista varten, Microsoft Fabric luo nämä tilastot automaattisesti, jos niitä ei vielä ole olemassa. Kun tilastotiedot on luotu, kyselyoptimointitoiminto voi hyödyntää niitä käynnistävän kyselyn suunnitelmakustannusten arvioinnissa. Lisäksi jos kyselymoduuli määrittää, että kyselyn kannalta olennaiset olemassa olevat tilastotiedot eivät enää vastaa tarkasti tietoja, nämä tilastotiedot päivitetään automaattisesti. Koska nämä automaattiset toiminnot tehdään synkronisesti, voit odottaa kyselyn keston sisältävän tämän ajan, jos tarvittavia tilastoja ei vielä ole olemassa tai merkittäviä tietojen muutoksia on tapahtunut viimeisimmän tilastopäivityksen jälkeen.

Tarkista automaattiset tilastotiedot kyselyn aikana

Joissakin tapauksissa saatat odottaa joitain automaattisia tilastoja. Yleisimpiä ovat histogrammipohjaiset tilastotiedot, joita kyselyn optimointitoiminto pyytää sarakkeille, joihin viitataan group BYs-, JOIN-, DISTINCT-lauseiden, suodattimien (WHERE-lauseet) ja ORDER BYs -lauseiden muodossa. Jos esimerkiksi haluat nähdä näiden tilastotietojen automaattisen luonnin, kysely käynnistää luonnin, jos tilastoja COLUMN_NAME ei vielä ole olemassa. Esimerkkejä:

SELECT <COLUMN_NAME>
FROM <YOUR_TABLE_NAME>
GROUP BY <COLUMN_NAME>;

Tässä tapauksessa sinun kannattaa odottaa, että tilastotiedot COLUMN_NAME on luotu. Jos sarake olisi myös varchar-sarake, sarakkeen keskimääräinen pituustilasto olisi myös luotu. Jos haluat vahvistaa, että tilastotiedot on luotu automaattisesti, voit suorittaa seuraavan kyselyn:

select
    object_name(s.object_id) AS [object_name],
    c.name AS [column_name],
    s.name AS [stats_name],
    s.stats_id,
    STATS_DATE(s.object_id, s.stats_id) AS [stats_update_date], 
    s.auto_created,
    s.user_created,
    s.stats_generation_method_desc 
FROM sys.stats AS s 
INNER JOIN sys.objects AS o 
ON o.object_id = s.object_id 
INNER JOIN sys.stats_columns AS sc 
ON s.object_id = sc.object_id 
AND s.stats_id = sc.stats_id 
INNER JOIN sys.columns AS c 
ON sc.object_id = c.object_id 
AND c.column_id = sc.column_id
WHERE o.type = 'U' -- Only check for stats on user-tables
    AND s.auto_created = 1
    AND o.name = '<YOUR_TABLE_NAME>'
ORDER BY object_name, column_name;

Tämä kysely etsii vain sarakepohjaisia tilastotietoja. Jos haluat nähdä kaikki tälle taulukolle olemassa olevat tilastotiedot, poista JOIN-yltä sys.stats_columns ja sys.columns.

Nyt voit löytää statistics_name automaattisesti muodostetun histogrammitilaston (pitäisi olla esimerkiksi _WA_Sys_00000007_3B75D760) ja suorittaa seuraavan T-SQL:n:

DBCC SHOW_STATISTICS ('<YOUR_TABLE_NAME>', '<statistics_name>');

Esimerkkejä:

DBCC SHOW_STATISTICS ('sales.FactInvoice', '_WA_Sys_00000007_3B75D760');

Updated DBCC SHOW_STATISTICS tulosjoukon arvon on oltava päivämäärä (UTC-alueella) samaan tapaan kuin suorittaessasi alkuperäisen GROUP BY -kyselyn.

Näitä automaattisesti luotuja tilastotietoja voidaan sitten hyödyntää seuraavissa kyselyissä kyselymoduulissa suunnittelun kustannusten ja suorituksen tehokkuuden parantamiseksi. Jos taulukossa tapahtuu tarpeeksi muutoksia, kyselymoduuli päivittää myös nämä tilastotiedot kyselyiden optimoinnin parantamiseksi. Sama aiempi malliharjoitus voidaan ottaa käyttöön, kun taulukkoa on muutettu huomattavasti. Fabricissa SQL-kyselymoduuli käyttää samaa jälleenmäydentämiskynnystä kuin SQL Server 2016 (13.x) tilastotietojen päivittämiseen.

Automaattisesti luotujen tilastotietojen tyypit

Microsoft Fabricissa on useita erityyppisiä tilastoja, jotka moduuli luo automaattisesti kyselysuunnitelmien parantamiseksi. Tällä hetkellä ne löytyvät sys.stats-tiedostoista , vaikka kaikki eivät ole toiminnallisia:

  • Histogrammin tilastotiedot
    • Luotu saraketta kohden, joka tarvitsee histogrammitilastoja kyselyn aikana
    • Nämä objektit sisältävät histogrammia ja tiheyden tietoja tietyn sarakkeen jakautumisesta. Samaan tapaan kuin kyselypalvelussa automaattisesti luodut tilastot Azure Synapse Analyticsin erillisissä varannoissa.
    • Nimi alkaa merkkijonolla _WA_Sys_.
    • Sisältöä voi tarkastella DBCC SHOW_STATISTICS
  • Sarakkeen keskimääräinen pituustilasto
    • Luotu muuttujan merkkisarakkeille (varchar), jotka ovat suurempia kuin 100, jotka tarvitsevat sarakkeen keskimääräisen pituuden kyselyn aikana.
    • Nämä objektit sisältävät arvon, joka edustaa varchar-sarakkeen keskimääräistä rivikokoa tilastotietojen luomishetkellä.
    • Nimi alkaa merkkijonolla ACE-AverageColumnLength_.
    • Sisältöä ei voi tarkastella, eikä käyttäjä voi käsitellä sitä.
  • Taulukkopohjaiset kardinaliteettitilastot
    • Luotu per taulukko, joka tarvitsee kardinaliteettiarvion kyselyn aikana.
    • Nämä objektit sisältävät arvion taulukon rivimäärästä.
    • Nimetty ACE-Cardinality.
    • Sisältöä ei voi tarkastella, eikä käyttäjä voi käsitellä sitä.

Rajoitukset

  • Vain yhden sarakkeen histogrammitilastoja voidaan luoda ja muokata manuaalisesti.
  • Monisarakkeisten tilastojen luomista ei tueta.
  • Muut tilasto-objektit saattavat näkyä sys.stats-tiedostoissa lukuun ottamatta manuaalisesti luotuja tilastoja ja automaattisesti luotuja tilastotietoja. Näitä objekteja ei käytetä kyselyn optimoinnissa.