Statisztika a Fabric-adatraktározásban
A következőkre vonatkozik: SQL-végpont és -raktár a Microsoft Fabricben
A Microsoft Fabric raktára egy lekérdezési motor használatával hoz létre végrehajtási tervet egy adott SQL-lekérdezéshez. Amikor elküld egy lekérdezést, a lekérdezésoptimalizáló megpróbálja számba venni az összes lehetséges tervet, és kiválasztani a leghatékonyabb jelöltet. Annak meghatározásához, hogy melyik terv igényelné a legkisebb többletterhelést (I/O és memória), a motornak képesnek kell lennie kiértékelni az egyes operátorok által esetleg feldolgozható munka vagy sorok mennyiségét. Ezután az egyes csomagok költségei alapján kiválasztja azt, amelyik a legkisebb becsült munkamennyiséget tartalmazza. A statisztikák olyan objektumok, amelyek releváns információkat tartalmaznak az adatokról, hogy a lekérdezésoptimalizáló megbecsülhesse ezeket a költségeket.
Fontos
A Microsoft Fabric jelenleg előzetes verzióban érhető el. Ezek az információk egy előzetes termékre vonatkoznak, amely a kiadás előtt lényegesen módosítható. A Microsoft nem vállal kifejezett vagy vélelmezett garanciát az itt megadott információkra vonatkozóan.
Statisztikák kihasználása
Az optimális lekérdezési teljesítmény elérése érdekében fontos, hogy pontos statisztikák legyenek. A Microsoft Fabric jelenleg a következő útvonalakat támogatja a releváns és naprakész statisztikák biztosításához:
- Felhasználó által megadott statisztikák
- A felhasználó igény szerint problémákat okoz a DDL-nek a statisztikák létrehozásához, frissítéséhez és elvetéséhez
- Automatikus statisztika
- A motor automatikusan létrehoz statisztikákat lekérdezéskor
Manuális statisztika az összes táblához
A statisztikai állapot fenntartásának hagyományos lehetősége a Microsoft Fabricben érhető el. A felhasználók hisztogramalapú egyoszlopos statisztikákat hozhatnak létre, frissíthetnek és elvethetnek a CREATE STATISTICS, UPDATE STATISTICS és DROP STATISTICS paranccsal. A felhasználók a dbCC SHOW_STATISTICS hisztogramalapú egyoszlopos statisztikáinak tartalmát is megtekinthetik. Jelenleg ezeknek az utasításoknak egy korlátozott verziója támogatott.
- Ha manuálisan hoz létre statisztikákat, fontolja meg a lekérdezési számítási feladatokban (különösen a GROUP BYs, ORDER BYs, filters és JOINs esetében) használt adatokra összpontosítson.
- Érdemes rendszeresen frissíteni az oszlopszintű statisztikákat az adatváltozások után, amelyek jelentősen módosítják az adatok sorszámát vagy eloszlását.
Példák manuális statisztikák karbantartására
Statisztikai adatok létrehozása a táblában az dbo.DimCustomer
oszlop CustomerKey
összes sora alapján:
CREATE STATISTICS DimCustomer_CustomerKey_FullScan
ON dbo.DimCustomer (CustomerKey) WITH FULLSCAN;
A statisztikai objektum DimCustomer_CustomerKey_FullScan
manuális frissítéséhez , talán egy nagy adatfrissítés után:
UPDATE STATISTICS DimCustomer_CustomerKey_FullScan (CustomerKey) WITH FULLSCAN;
A statisztikai objektummal kapcsolatos információk megjelenítése:
DBCC SHOW_STATISTICS ("dbo.DimCustomer", "DimCustomer_CustomerKey_FullScan");
Csak a statisztikai objektum hisztogramjával kapcsolatos információk megjelenítése:
DBCC SHOW_STATISTICS ("dbo.DimCustomer", "DimCustomer_CustomerKey_FullScan") WITH HISTOGRAM;
A statisztikai objektum DimCustomer_CustomerKey_FullScan
manuális elvetése:
DROP STATISTICS dbo.DimCustomer.DimCustomer_CustomerKey_FullScan;
A következő T-SQL-objektumok segítségével manuálisan létrehozott és automatikusan létrehozott statisztikák is ellenőrizhetők a Microsoft Fabricben:
- sys.stats katalógusnézet
- sys.stats_columns katalógusnézet
- STATS_DATE rendszerfüggvény
Automatikus statisztika lekérdezéskor
Amikor lekérdezést ad ki, és a lekérdezésoptimalizáló statisztikát igényel a tervfeltáráshoz, a Microsoft Fabric automatikusan létrehozza ezeket a statisztikákat, ha még nem léteznek. A statisztikák létrehozása után a lekérdezésoptimalizáló felhasználhatja őket az eseményindító lekérdezés tervköltségeinek becsléséhez. Mivel ez a létrehozás szinkron módon történik, számíthat arra, hogy az első lekérdezés futtatása tartalmazza ezt a statisztikai létrehozási időt.
Az automatikus statisztikalétrehozás ellenőrzése lekérdezéskor
Különböző esetekben számíthat arra, hogy bizonyos típusú statisztikák automatikusan létrejönnek. A leggyakoribbak a hisztogramalapú rendszerstatisztikák, amelyeket gyakran a GROUP BYs, JOINs, DISTINCT záradékok, szűrők (WHERE záradékok) és ORDER BYs oszlopokhoz hoznak létre. Ha például látni szeretné ezeknek a statisztikáknak az automatikus létrehozását, a lekérdezés létrehozása akkor aktiválódik, ha még nem léteznek statisztikák COLUMN_NAME
. Például:
SELECT <COLUMN_NAME>
FROM <YOUR_TABLE_NAME>
GROUP BY <COLUMN_NAME>;
Ebben az esetben arra kell számítania, hogy a statisztikák COLUMN_NAME
létre lettek hozva. Ha az oszlop szintén varchar oszlop volt, akkor az átlagos oszlophossz-statisztikák is létrejönnek. Ha ellenőrizni szeretné, hogy a statisztikák automatikusan létre lettek-e hozva, futtassa a következő lekérdezést:
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;
Ez a lekérdezés csak oszlopalapú statisztikákat keres. Ha meg szeretné tekinteni a táblához tartozó összes statisztikát, távolítsa el a joiN-eket a és sys.columns
a rendszerensys.stats_columns
.
Most megtalálhatja az statistics_name
automatikusan létrehozott hisztogramstatisztikát (ennek hasonlónak _WA_Sys_00000007_3B75D760
kell lennie), és futtathatja a következő T-SQL-t:
DBCC SHOW_STATISTICS ('<YOUR_TABLE_NAME>', '<statistics_name>');
Például:
DBCC SHOW_STATISTICS ('sales.FactInvoice', '_WA_Sys_00000007_3B75D760');
A Updated
DBCC SHOW_STATISTICS eredményhalmazában szereplő értéknek olyan dátumnak kell lennie (UTC-ben), mint az eredeti GROUP BY lekérdezés futtatásakor.
Megjegyzés
A Microsoft Fabric jelenleg nem támogatja a statisztikák lekérdezési időpontban történő automatikus frissítését.
Az automatikusan létrehozott statisztikák típusai
A Microsoft Fabricben több statisztikai típus is létezik, amelyeket a motor automatikusan generál a lekérdezési tervek javítása érdekében. Jelenleg a sys.stats-ban találhatók, bár nem mindegyik használható:
- Hisztogram statisztikái
- Hisztogramstatisztikát igénylő oszloponként létrehozva a lekérdezési időpontban
- Ezek az objektumok hisztogramot és sűrűségadatokat tartalmaznak egy adott oszlop eloszlásáról. A dedikált Azure Synapse Analytics-készletekben a lekérdezési időpontban automatikusan létrehozott statisztikákhoz hasonlóan.
- A név a névvel
_WA_Sys_
kezdődik. - A tartalom megtekinthető a DBCC SHOW_STATISTICS
- Átlagos oszlophossz-statisztika
- Olyan karakteroszlopokhoz (karakter és varchar) készült, amely lekérdezéskor átlagos oszlophosszt igényel.
- Ezek az objektumok a varchar oszlop átlagos sorméretét jelölő értéket tartalmaznak a statisztikák létrehozásakor.
- A név a névvel
ACE-AverageColumnLength_
kezdődik. - A tartalom nem tekinthető meg, és a felhasználó nem tudja megjeleníteni.
- Táblaalapú számosságstatisztika
- A lekérdezési időpontban számosságbecslést igénylő táblánként létrehozva.
- Ezek az objektumok egy tábla sorszámának becslését tartalmazzák.
- Név:
ACE-Cardinality
. - A tartalom nem tekinthető meg, és a felhasználó nem tudja megjeleníteni.
Korlátozások
- Csak egyoszlopos hisztogramstatisztikák hozhatók létre és módosíthatók manuálisan.
- A többoszlopos statisztikák létrehozása nem támogatott.
- A sys.stats alatt más statisztikai objektumok is megjelenhetnek a manuálisan létrehozott és automatikusan létrehozott statisztikákon kívül. Ezek az objektumok nem használhatók lekérdezésoptimalizáláshoz.