Distribution Advisor az Azure Synapse SQL-ben

A következőkre vonatkozik: Dedikált Azure Synapse Analytics SQL-készletek (korábban SQL DW)

Az Azure Synapse SQL-ben minden tábla az ügyfél által választott stratégiával van elosztva (Round Robin, Hash Distributed, Replikálva). A választott terjesztési stratégia jelentősen befolyásolhatja a lekérdezés teljesítményét.

Az Azure Synapse SQL Distribution Advisor (DA) funkciója elemzi az ügyfelek lekérdezéseit, és a táblák legjobb terjesztési stratégiáit javasolja a lekérdezési teljesítmény javítása érdekében. A tanácsadó által megfontolandó lekérdezéseket az ügyfél szolgáltathatja, vagy lektorozhatja a DMV-ben elérhető korábbi lekérdezésekből.

Megjegyzés:

A Distribution Advisor jelenleg előzetes verzióban érhető el az Azure Synapse Analyticshez. Az előzetes verziójú funkciók csak tesztelésre szolgálnak, és nem használhatók éles példányokon vagy éles adatokon. Előzetes verziójú funkcióként a Distribution Advisor viselkedésében vagy funkcióiban változásoknak kell alávetni magát. Ha az adatok fontosak, őrizze meg a tesztadatok másolatát is. A Distribution Advisor nem támogatja a többoszlopos elosztott táblákat.

Előfeltételek

  • Futtassa a T-SQL utasítást SELECT @@version , hogy az Azure Synapse Analytics dedikált SQL-készlete a 10.0.15669-es vagy újabb verzió legyen. Ha a verzió alacsonyabb, az új verziónak automatikusan el kell érnie a kiépített dedikált SQL-készleteket a karbantartási ciklus során.

  • A tanácsadó futtatása előtt győződjön meg arról, hogy a statisztikák elérhetők és naprakészek. A statisztikai adatokkal kapcsolatos további részletekért a táblázatstatisztikák kezelése, a CREATE STATISTICS és az UPDATE STATISTICS cikkekben talál további információt.

  • Engedélyezze az Azure Synapse terjesztési tanácsadót az aktuális munkamenethez a Standard kiadás T RECOMMENDATIONS T-SQL paranccsal.

Számítási feladatok elemzése és terjesztési javaslatok létrehozása

Az alábbi oktatóanyag bemutatja a mintahasználati esetet az ügyfél-lekérdezések elemzéséhez és a legjobb terjesztési stratégiák ajánlásához a Distribution Advisor szolgáltatás használatával.

A Distribution Advisor csak a felhasználói táblákon futtatott lekérdezéseket elemzi.

1. A Distribution Advisor tárolt eljárásainak létrehozása

A tanácsadó egyszerű futtatásához hozzon létre két új tárolt eljárást az adatbázisban. Futtassa a GitHubról letölthető CreateDistributionAdvisor_PublicPreview szkriptet:

Parancs Leírás
dbo.write_dist_recommendation Meghatározza azokat a lekérdezéseket, amelyeken a DA elemezni fog. A lekérdezéseket manuálisan is megadhatja, vagy akár 100 korábbi lekérdezésből is olvashat a sys.dm_pdw_exec_requests tényleges számítási feladataiból.
dbo.read_dist_recommendation Futtatja az tanácsadót, és javaslatokat hoz létre.

Íme egy példa arra, hogyan futtathatja a tanácsadót.

2a. Az tanácsadó futtatása a DMV-ben a korábbi számítási feladatokon

Futtassa a következő parancsokat a számítási feladat utolsó 100 lekérdezésének olvasásához elemzési és terjesztési javaslatokhoz:

EXEC dbo.write_dist_recommendation <Number of Queries max 100>, NULL
go
EXEC dbo.read_dist_recommendation;
go

Annak megtekintéséhez, hogy a DA mely lekérdezéseket elemezte, futtassa a GitHubról letölthető e2e_queries_used_for_recommendations.sql szkriptet.

2b. Az tanácsadó futtatása a kiválasztott lekérdezéseken

Az első paramétert dbo.write_dist_recommendation a következőre kell állítani 0, a második paraméter pedig egy pontosvesszővel tagolt lista, amely legfeljebb 100 lekérdezésből áll, amelyeket a DA elemezni fog. Az alábbi példában két pontosvesszővel elválasztott utasítás terjesztési javaslatát szeretnénk látni. select count (*) from t1;select * from t1 join t2 on t1.a1 = t2.a1;

EXEC dbo.write_dist_recommendation 0, 'select count (*) from t1; select * from t1 join t2 on t1.a1 = t2.a1;'
go
EXEC dbo.read_dist_recommendation;
go

3. Javaslatok megtekintése

A dbo.read_dist_recommendation rendszer által tárolt eljárás a végrehajtás befejezésekor a következő formátumban adja vissza a javaslatokat:

Oszlop neve Ismertetés
Table_name Az a tábla, amelyet a da elemzett. Táblázatonként egy sor, a javaslat módosításától függetlenül.
Current_Distribution Aktuális táblaterjesztési stratégia.
Recommended_Distribution Ajánlott eloszlás. Ez ugyanaz lehet, mintha Current_Distribution nem lenne javasolt módosítás.
Distribution_Change_Command CTAS T-SQL-parancs a javaslat implementálásához.

4. A tanács végrehajtása

  • Futtassa a Distribution Advisor által biztosított CTAS-parancsot, hogy új táblákat hozzon létre az ajánlott terjesztési stratégiával.
  • Módosítsa a lekérdezéseket úgy, hogy új táblákon fussanak.
  • Lekérdezések végrehajtása régi és új táblákon a teljesítménybeli fejlesztések összehasonlításához.

Megjegyzés:

A Terjesztési tanácsadó fejlesztéséhez töltse ki ezt a gyors felmérést.

Hibaelhárítás

Ez a szakasz gyakori hibaelhárítási forgatókönyveket és gyakori hibákat tartalmaz.

1. Elavult állapot a tanácsadó korábbi futtatásából

1a. Hibajelenség:

Ez a hibaüzenet jelenik meg az tanácsadó futtatásakor:

Msg 110813, Level 16, State 1, Line 1
Calling GetLastScalarResult() before executing scalar subquery.
1b. Mitigation:
  • Ellenőrizze, hogy egyetlen idézőjelet használ-e a tanácsadó futtatásához a kiválasztott lekérdezéseken.
  • Indítsa el az új munkamenetet az SSMS-ben, és futtassa az tanácsadót.

2. Hibák a tanácsadó futtatása során

2a. Hibajelenség:

Az "eredmény" panel alább látható CommandToInvokeAdvisorString , de nem az RecommendationOutput alábbiakat jeleníti meg.

Például csak az Command_to_Invoke_Distribution_Advisor eredményhalmaz jelenik meg.

Screenshot of the output of a T-SQL result showing the Command_to_Invoke_Distribution_Advisor.

A táblázatot tartalmazó második eredményhalmaz azonban nem módosítja a T-SQL-parancsokat:

Screenshot of the output of a T-SQL result showing the Command_to_Invoke_Distribution_Advisor with a second resultset containing table change T-SQL commands.

2b. Mitigation:
  • Ellenőrizze a fenti kimenetet CommandToInvokeAdvisorString .

  • Távolítsa el azokat a lekérdezéseket, amelyek már érvénytelenek lehetnek, és amelyek esetleg itt lettek hozzáadva a kézzel kiválasztott lekérdezésekből vagy a DMV-ből a következő záradék szerkesztésével WHERE : A DA által megfontolt lekérdezések.

3. Hiba a javaslat kimenetének utófeldolgozása során

3a. Hibajelenség:

A következő hibaüzenet jelenik meg.

Invalid length parameter passed to the LEFT or SUBSTRING function.
3b. Mitigation:

Győződjön meg arról, hogy a GitHubon a tárolt eljárás legfrissebb verzióját használja:

Azure Synapse-termékcsoport visszajelzése

A Terjesztési tanácsadó fejlesztéséhez töltse ki ezt a gyors felmérést.

Ha a cikkben nem szereplő információkra van szüksége, az Azure Synapse Microsoft Q&A kérdésoldalán kereshet, ahol kérdéseket tehet fel más felhasználóknak és az Azure Synapse Analytics termékcsoportnak.

Aktívan figyeljük ezt a fórumot, és gondoskodunk róla, hogy tőlünk vagy egy másik felhasználótól választ kapjon a kérdéseire. Ha inkább a Stack Overflow-ról szeretne kérdéseket feltenni, az Azure Synapse Analytics Stack Overflow fóruma is megtalálható.

Funkciókérések esetén használja az Azure Synapse Analytics visszajelzési oldalát. A kérések hozzáadása vagy az egyéb kérések felvételével a legigényesebb funkciókra összpontosíthatunk.

További lépések