Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:✅ Koncový bod SQL analytics a Datový sklad v Microsoft Fabric
Sklad v Microsoft Fabric používá dotazovací modul k vytvoření plánu provádění pro daný dotaz SQL. Když odešlete dotaz, optimalizátor dotazů se pokusí zvážit všechny možné plány a zvolit nejúčinnějšího kandidáta. Aby bylo možné určit, který plán by vyžadoval nejmenší režijní náklady (vstupně-výstupní operace, procesor, paměť), musí být modul schopný vyhodnotit množství práce nebo řádků, které by mohly být zpracovány u každého operátoru. Potom na základě nákladů každého plánu zvolí ten s nejmenším odhadovaným objemem práce. Statistiky jsou objekty, které obsahují relevantní informace o vašich datech, aby optimalizátor dotazů mohl tyto náklady odhadnout.
Jak používat statistiky
Pokud chcete dosáhnout optimálního výkonu dotazů, je důležité mít přesné statistiky. Microsoft Fabric v současné době podporuje následující cesty k poskytování relevantních a aktuálních statistik:
- Uživatelsky definované statistiky
- Automatické statistiky
- Engine automaticky vytváří a udržuje statistiky během dotazu
Ruční statistiky pro všechny tabulky
Tradiční možnost zachování kondice statistik je k dispozici v Microsoft Fabric. Uživatelé mohou vytvářet, aktualizovat a odstraňovat jednosloupcové statistiky založené na histogramu pomocí CREATE STATISTICS, UPDATE STATISTICS a DROP STATISTICS v uvedeném pořadí. Uživatelé také můžou zobrazit obsah statistik založených na histogramu s jedním sloupcem pomocí DBCC SHOW_STATISTICS. V současné době je podporována omezená verze těchto příkazů.
- Pokud vytváříte statistiky ručně, zvažte zaměření se na sloupce, které se ve vaší úloze dotazů často používají (konkrétně v GROUP BY, ORDER BYs, ve filtrech a v JOINech).
- Zvažte pravidelné aktualizace statistik na úrovni sloupců po změnách dat, které výrazně mění počet řádků nebo distribuci dat.
Příklady ruční údržby statistik
Vytvořte statistiku v tabulce dbo.DimCustomer na základě všech řádků ve sloupci CustomerKey:
CREATE STATISTICS DimCustomer_CustomerKey_FullScan
ON dbo.DimCustomer (CustomerKey) WITH FULLSCAN;
Chcete-li ručně aktualizovat objekt statistiky DimCustomer_CustomerKey_FullScan, například po velké aktualizaci dat:
UPDATE STATISTICS dbo.DimCustomer (DimCustomer_CustomerKey_FullScan) WITH FULLSCAN;
Zobrazit informace o objektu statistik:
DBCC SHOW_STATISTICS ("dbo.DimCustomer", "DimCustomer_CustomerKey_FullScan");
Chcete-li zobrazit pouze informace o histogramu objektu statistiky:
DBCC SHOW_STATISTICS ("dbo.DimCustomer", "DimCustomer_CustomerKey_FullScan") WITH HISTOGRAM;
Chcete-li objekt statistik DimCustomer_CustomerKey_FullScan ručně odstranit:
DROP STATISTICS dbo.DimCustomer.DimCustomer_CustomerKey_FullScan;
Následující objekty T-SQL lze také použít ke kontrole ručně vytvořených a automaticky vytvořených statistik v Microsoft Fabric:
- zobrazení katalogu sys.stats
- sys.stats_columns zobrazení katalogu
- STATS_DATE systémová funkce
Automatické statistiky při dotazu
Pokaždé, když vydáte dotaz a optimalizátor dotazů vyžaduje statistiky pro zkoumání plánu, Microsoft Fabric tyto statistiky automaticky vytvoří, pokud ještě neexistují. Po vytvoření statistik je může optimalizátor dotazů využít při odhadu nákladů na plán spouštěcího dotazu. Kromě toho, pokud dotazovací stroj zjistí, že existující statistiky relevantní pro dotaz již přesně neodráží data, tyto statistiky se automaticky aktualizují. Vzhledem k tomu, že se tyto automatické operace provádějí synchronně, můžete očekávat, že doba trvání dotazu bude zahrnovat tento čas v případě, že potřebné statistiky ještě neexistují nebo od poslední aktualizace statistik došlo k významným změnám dat.
Ověřte automatické statistiky v querytime
Existují různé případy, kdy můžete očekávat nějaký druh automatických statistik. Nejběžnější jsou statistiky založené na histogramu, které jsou požadovány optimalizátorem dotazů pro sloupce použité v klauzulích GROUP BY, JOIN, DISTINCT, filtrech (klauzulích WHERE) a ORDER BY. Pokud například chcete zobrazit automatické vytváření těchto statistik, dotaz vyvolá jejich vytvoření, pokud statistiky pro COLUMN_NAME ještě neexistují. Příklad:
SELECT <COLUMN_NAME>
FROM <YOUR_TABLE_NAME>
GROUP BY <COLUMN_NAME>;
V tomto případě byste měli očekávat, že statistiky pro COLUMN_NAME již byly vytvořeny. Pokud byl sloupec také typu varchar, zobrazily by se také vytvořené statistiky průměrné délky sloupce. Pokud chcete ověřit, že se statistiky vytvořily automaticky, můžete spustit následující dotaz:
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
LEFT JOIN sys.stats_columns AS sc
ON s.object_id = sc.object_id
AND s.stats_id = sc.stats_id
LEFT 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;
Teď můžete najít statistics_name automaticky vygenerované statistiky histogramu (mělo by to být něco jako _WA_Sys_00000007_3B75D760) a spustit následující T-SQL:
DBCC SHOW_STATISTICS ('<YOUR_TABLE_NAME>', '<statistics_name>');
Příklad:
DBCC SHOW_STATISTICS ('sales.FactInvoice', '_WA_Sys_00000007_3B75D760');
Updated Hodnota v sadě výsledků příkazu DBCC SHOW_STATISTICS by měla být datem (v UTC), podobně jako při spuštění původního dotazu GROUP BY.
Tyto automaticky generované statistiky pak může dotazovací modul využít v následných dotazech ke zlepšení odhadu nákladů plánu a efektivity provádění. Pokud v tabulce dojde k dostatečným změnám, dotazovací modul tyto statistiky aktualizuje, aby se zlepšila optimalizace dotazů. Stejné předchozí ukázkové cvičení se dá použít i po významné změně tabulky. Ve Fabric používá dotazovací modul SQL k aktualizaci statistik stejnou mezní hodnotu rekompilace jako SQL Server 2016 (13.x).
Typy automaticky generovaných statistik
V Microsoft Fabric existuje několik typů statistik, které jsou automaticky generovány za účelem vylepšení plánů dotazů. V současné době je lze nalézt v sys.stats, ačkoli ne všechny jsou použitelné:
- Statistika histogramu
- Vytvořeno pro každý sloupec vyžadující statistiky histogramu při dotazu
- Tyto objekty obsahují histogram a informace o hustotě týkající se rozdělení konkrétního sloupce. Podobá se statistikám automaticky vytvořeným v době kompilace dotazu ve vyhrazených fondech SQL Azure Synapse Analytics.
- Název začíná znakem
_WA_Sys_. - Obsah lze zobrazit pomocí DBCC SHOW_STATISTICS
- Průměrné statistiky délky sloupců
- Vytvořeno pro sloupce s proměnnou délkou znaků (varchar) delší než 100 znaků, které při době dotazu potřebují průměrnou délku sloupce.
- Tyto objekty obsahují hodnotu představující průměrnou velikost řádku pro sloupec varchar v době vytvoření statistiky.
- Název začíná znakem
ACE-AverageColumnLength_. - Obsah nelze zobrazit a uživatel s ním nemůže pracovat.
- Statistiky kardinality podle tabulky
- Vytváří se pro tabulku vyžadující odhad kardinálity v době spuštění dotazu, pouze pokud nejsou k dispozici jiná metadata počtu řádků.
- Tyto objekty obsahují odhad počtu řádků tabulky.
- Pojmenováno
ACE-Cardinality. - Obsah nelze zobrazit a uživatel s ním nemůže provádět žádné akce.
- Vytváří se pro tabulku vyžadující odhad kardinálity v době spuštění dotazu, pouze pokud nejsou k dispozici jiná metadata počtu řádků.
Integrované optimalizace ve statistikách Fabricu
Přírůstková aktualizace statistik
Přírůstková aktualizace statistik je vylepšení výkonu pro automatické aktualizace statistik sloupců.
Obvykle platí, že když se statistika sloupce automaticky aktualizuje, musí se zkontrolovat vzorek celého sloupce, aby se statistika aktualizovala. Tato funkce tyto operace zrychluje, pokud je to možné, pouze vzorkováním řádků, které byly přidány od poslední aktualizace, a sloučením těchto dat s existujícími histogramy.
Když modul požádá o aktualizaci statistiky sloupců, automaticky určí, jestli se tato rychlejší metoda aktualizace dá použít. Přírůstkové aktualizace statistik jsou obvykle přínosné pro větší tabulky, které byly většinou aktualizovány pomocí příkazů INSERT od poslední aktualizace statistik.
Proaktivní aktualizace statistik
Proaktivní aktualizace statistik je plně spravovaný proces, který se po změně dat pokouší předem provést aktualizaci statistik.
Cílem této optimalizace je snížit pravděpodobnost SELECT zpoždění dotazu způsobeného aktualizacemi statistik během generování plánu dotazů.
Proaktivní aktualizace statistik ovlivňují pouze automaticky generované statistiky histogramu, které mají systémově generovaný konvenční způsob pojmenování_WA_Sys_.
Funkce proaktivní aktualizace statistik je ve výchozím nastavení povolená, ale dá se nakonfigurovat pomocí příkazu ALTER DATABASE T-SQL.
Omezení
- Ručně lze vytvořit a upravit pouze statistiky histogramu s jedním sloupcem.
- Vytváření statistik s více sloupci není podporováno.
- Jiné statistické objekty se mohou objevit v sys.stats vedle ručně vytvořené statistiky a automaticky vytvořené statistiky. Tyto objekty se nepoužívají k optimalizaci dotazů.