Distribution Advisor in Azure Synapse SQL

Si applica a: pool SQL dedicati di Azure Synapse Analytics (in precedenza SQL Data Warehouse)

In Azure Synapse SQL ogni tabella viene distribuita in base alla strategia scelta dal cliente (round robin, con distribuzione hash, con replica). La strategia di distribuzione scelta può influire sostanzialmente sulle prestazioni delle query.

La funzionalità Distribution Advisor (DA) di Azure Synapse SQL analizza le query dei clienti e consiglia le strategie ideali di distribuzione per le tabelle per migliorare le prestazioni delle query. Le query che devono essere considerate da Advisor possono essere fornite dal cliente o estratte dalle query cronologiche disponibili nella DMV.

Nota

Distribution Advisor è attualmente disponibile in anteprima per Azure Synapse Analytics. Le funzionalità di anteprima sono destinate solo ai test e non dovrebbero essere usate nelle istanze di produzione o nei dati di produzione. In quanto funzionalità di anteprima, Distribution Advisor è soggetto a modifiche a livello di comportamento o funzionalità. Conservare anche una copia dei dati di test se sono importanti. Distribution Advisor non supporta tabelle distribuite a più colonne.

Prerequisiti

  • Eseguire l'istruzione T-SQL SELECT @@version per assicurarsi che la versione del pool SQL dedicato di Azure Synapse Analytics sia la 10.0.15669 o successiva. Se la versione è precedente, durante il ciclo di manutenzione una nuova versione dovrebbe essere installata automaticamente nei pool SQL dedicati di cui è stato effettuato il provisioning.

  • Assicurarsi che le statistiche siano disponibili e aggiornate prima di eseguire Advisor. Per altre informazioni sulle statistiche, consultare gli articoli Gestire le statistiche delle tabelle, CREATE STATISTICS e UPDATE STATISTICS.

  • Per abilitare Azure Synapse Distribution Advisor per la sessione corrente, eseguire il comando T-SQL SET RECOMMENDATIONS.

Analizzare il carico di lavoro e generare raccomandazioni per la distribuzione

L'esercitazione seguente illustra il caso d'uso di esempio relativo all'uso della funzionalità Distribution Advisor per analizzare le query dei clienti e consigliare le strategie di distribuzione ideali.

Distribution Advisor analizza solo le query eseguite sulle tabelle utente.

1. Creare stored procedure di Distribution Advisor

Per eseguire facilmente Advisor, creare due nuove stored procedure nel database. Eseguire lo script CreateDistributionAdvisor_PublicPreview disponibile per il download da GitHub:

Comando Descrizione
dbo.write_dist_recommendation Definisce le query su cui Distribution Advisor eseguirà l'analisi. È possibile fornire le query manualmente oppure leggere fino a 100 query precedenti dai carichi di lavoro effettivi in sys.dm_pdw_exec_requests.
dbo.read_dist_recommendation Esegue Advisor e genera le raccomandazioni.

Ecco un esempio relativo a come è possibile eseguire Advisor.

2a. Eseguire Advisor sul carico di lavoro precedente nella DMV

Eseguire i comandi seguenti per leggere fino alle ultime 100 query nel carico di lavoro per le raccomandazioni di analisi e di distribuzione:

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

Per vedere quali query sono state analizzate da Distribution Advisor, eseguire lo script e2e_queries_used_for_recommendations.sql disponibile per il download da GitHub.

2b. Eseguire Advisor per le query selezionate

Il primo parametro in dbo.write_dist_recommendation deve essere impostato su 0, mentre il secondo parametro è un elenco delimitato da punti e virgola di un massimo di 100 query che verranno analizzate da Distribution Advisor. Nell'esempio seguente si vogliono visualizzare le raccomandazioni di distribuzione per due istruzioni separate da punti e virgola, ovvero select count (*) from t1; e 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. Visualizzare raccomandazioni

La stored procedure di sistema dbo.read_dist_recommendation restituirà raccomandazioni nel formato seguente al termine dell'esecuzione:

Nome colonna Descrizione
Table_name Tabella analizzata da Distribution Advisor. Una riga per tabella indipendentemente dalla modifica della raccomandazione.
Current_Distribution Strategia di distribuzione della tabella corrente.
Recommended_Distribution Distribuzione consigliata. Può essere uguale a Current_Distribution se non è stata consigliata alcuna modifica.
Distribution_Change_Command Comando T-SQL CTAS per implementare la raccomandazione.

4. Implementare il consiglio

  • Eseguire il comando CTAS fornito da Distribution Advisor per creare nuove tabelle con la strategia di distribuzione consigliata.
  • Modificare le query da eseguire su nuove tabelle.
  • Eseguire query su tabelle nuove e precedenti per confrontare i miglioramenti in termini di prestazioni.

Nota

Per contribuire al miglioramento di Distribution Advisor, completare questo sondaggio rapido.

Risoluzione dei problemi

Questa sezione contiene scenari comuni di risoluzione dei problemi e errori riscontrati di frequente.

1. Stato non aggiornato da un'esecuzione precedente di Advisor

1a. Sintomo:

Viene visualizzato questo messaggio di errore durante l'esecuzione di Advisor:

Msg 110813, Level 16, State 1, Line 1
Calling GetLastScalarResult() before executing scalar subquery.
1b. Attenuazione:
  • Verificare di usare le virgolette singole '' per eseguire Advisor su query selezionate.
  • Avviare una nuova sessione in SQL Server Management Studio ed eseguire Advisor.

2. Errori riscontrati durante l'esecuzione di Advisor

2a. Sintomo:

Il riquadro 'result' indica CommandToInvokeAdvisorString, ma non mostra il valore di RecommendationOutput riportato di seguito.

Ad esempio, viene visualizzato solo il set di risultati Command_to_Invoke_Distribution_Advisor.

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

Ma non il secondo set di risultati contenente i comandi T-SQL di modifica della tabella:

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. Attenuazione:
  • Controllare l'output di CommandToInvokeAdvisorString precedente.

  • Rimuovere le query che potrebbero non essere più valide e che potrebbero essere state aggiunte qui dalle query selezionate a mano o dalla DMV modificando la clausola WHERE in: Query considerate da Distribution Advisor.

3. Errore riscontrato durante la post-elaborazione dell'output delle raccomandazioni

3a. Sintomo:

Viene visualizzato il messaggio di errore seguente.

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

Assicurarsi di avere la versione più aggiornata della stored procedure da GitHub:

Feedback del gruppo di prodotti Azure Synapse

Per contribuire al miglioramento di Distribution Advisor, completare questo sondaggio rapido.

Se sono necessarie informazioni non incluse in questo articolo, consultare la pagina delle domande di Microsoft Q&A relativa ad Azure Synapse, in cui è possibile porre domande ad altri utenti e al gruppo di prodotti Azure Synapse Analytics.

Questo forum viene monitorato attivamente per garantire che venga fornita una risposta a tutte le domande, da un altro utente o da Microsoft. Se si preferisce porre domande in Stack Overflow, è disponibile anche un forum di Stack Overflow su Azure Synapse Analytics.

Per le richieste di funzionalità, usare la pagina di feedback su Azure Synapse Analytics. L'aggiunta di richieste o il voto di altre richieste consente di concentrarsi sulle funzionalità più richieste.

Passaggi successivi