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:

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_FullScanmanuá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_FullScanmanuá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:

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.columnsa rendszerensys.stats_columns.

Most megtalálhatja az statistics_name automatikusan létrehozott hisztogramstatisztikát (ennek hasonlónak _WA_Sys_00000007_3B75D760kell 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 UpdatedDBCC 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.

Következő lépések