Raccomandazioni di ottimizzazione su Azure Databricks

Le query lente e i costi di calcolo elevati di solito derivano da alcune cause radici: leggere più dati di quanti ne abbia bisogno una query, spostare dati tra nodi, scegliere un piano di query scadente o riscrivere file che non sono cambiati. Azure Databricks risolve automaticamente molti di questi problemi su carichi di lavoro che vanno dall'elaborazione ETL su larga scala alle query interattive ad hoc. Altre ottimizzazioni si applicano solo quando le attivi o le regoli per un carico di lavoro specifico.

Questa pagina inizia con raccomandazioni per la maggior parte dei carichi di lavoro, poi raggruppa le ottimizzazioni in base al fatto che vengano eseguite automaticamente o che richiedano di configurarle, e descrive il problema che ciascuna risolve. La maggior parte delle ottimizzazioni di Databricks Runtime richiede Delta Lake, il formato predefinito per le tabelle in Azure Databricks.

Inizia con queste raccomandazioni

Queste scelte offrono i maggiori guadagni di prestazioni per la maggior parte dei carichi di lavoro. Aiutano anche molte delle ottimizzazioni automatiche di questa pagina a funzionare al meglio.

  • Usa il clustering liquido per la disposizione delle tabelle.Il clustering liquido sostituisce la partizione delle tabelle e ZORDER. Organizza i dati per colonne su cui filtri frequentemente, il che migliora data skipping e la potatura dinamica dei file.
  • Usa le tabelle gestite di Unity Catalog.L'ottimizzazione predittiva mantiene automaticamente le tabelle gestite. Vedi le tabelle gestite di Unity Catalog per Delta Lake e Apache Iceberg.
  • Usa il calcolo con Photon abilitato. L'I/O predittiva richiede Photon, così come la potatura dinamica dei file nelle istruzioni MERGE, UPDATE e DELETE. Vedi Che cos'è Photon?.
  • Abilita i vettori di cancellazione. L'I/O predittiva utilizza vettori di cancellazione per evitare di riscrivere interi file durante aggiornamenti, cancellazioni e merge, e la concorrenza a livello di riga li richiede. Per le tabelle Delta Lake, devi abilitare esplicitamente i vettori di cancellazione. Vedere Vettori di eliminazione in Databricks.
  • Usa l'ultima runtime di Databricks. Le nuove versioni includono i più recenti miglioramenti delle prestazioni. Alcune ottimizzazioni richiedono una versione minima Databricks Runtime o calcolo abilitato a Photon. Consulta ogni pagina per i requisiti.

Ottimizzazioni automatiche

Queste ottimizzazioni sono attive di default. Non è necessario abilitarli, ma alcuni offrono maggiori benefici quando le tue tabelle e le tue risorse di calcolo soddisfano determinate condizioni, come l'uso di Photon o il mantenimento aggiornato delle statistiche delle tabelle.

  • Cache su disco: Velocizza le query che leggono ripetutamente gli stessi file dati remoti di Parquet e Delta Lake. Azure Databricks memorizza in cache copie dei file sull'archiviazione locale dei nodi di calcolo in modo che le letture successive vengano eseguite localmente. Azure Databricks lo abilita automaticamente sui tipi di istanze worker che lo supportano.
  • Potatura dinamica dei file: Salta file che non possono contenere righe corrispondenti nelle join delle tabelle Delta Lake. MERGE, UPDATE e DELETE le istruzioni SQL richiedono compute con Photon abilitato per la potatura dinamica dei file.
  • Unione con shuffle ridotto: Accelera MERGE le operazioni che aggiornano o cancellano alcune righe in ogni file. La fusione low shuffle processa le righe non modificate senza shuffle e mantiene il layout dei dati esistente.
  • Esecuzione adattiva delle query: Riottimizza i piani di query mentre le query vengono eseguite, in base alla dimensione effettiva dei dati. Questo corregge strategie di join lente, troppe piccole attività e attività sbilanciate derivanti da stime imprecise.
  • I/O predittivo: Velocizza le scansioni dei dati e riduce i dati riscritti durante aggiornamenti, cancellazioni e fusioni sulle risorse di calcolo abilitate a Photon.
  • Ottimizzatore basato sui costi: Utilizza statistiche di tabelle e colonne per scegliere piani di query efficienti, specialmente per query con più join. L'ottimizzatore basato sul costo si basa sulle statistiche, quindi raccoglile e mantienile aggiornate.
  • Ottimizzazione predittiva: Esegue OPTIMIZE, VACUUM e ANALYZE automaticamente sulle tabelle gestite di Unity Catalog, quindi non è necessario programmare la manutenzione delle tabelle. Mantiene inoltre aggiornate le statistiche utilizzate dall'ottimizzatore basato sui costi. Per verificare se è abilitato per il tuo account, vedi Verifica se l'ottimizzazione predittiva è abilitata.

Ottimizzazioni che configuri

Queste ottimizzazioni richiedono di attivarle, di metterle a punto o di cambiare la configurazione della tabella. Usateli quando un carico di lavoro richiede comportamenti che i valori predefiniti non coprono.

  • Supporto archivistico: Utilizzare quando le politiche del ciclo di vita cloud spostano i vecchi file di tabella su livelli di archiviazione per ridurre i costi di archiviazione. Il supporto archivistico indica ad Azure Databricks di ignorare i file più vecchi di un periodo specificato, così la politica del ciclo di vita non interrompe le query che leggono solo dati recenti. Questa funzionalità è disponibile in anteprima pubblica.
  • Range join: Da usare quando i join usano una condizione di punto nell'intervallo o di sovrapposizione di intervalli. Databricks SQL ottimizza automaticamente le join di range. In altri ambienti di calcolo, regolare le join di range con suggerimenti di join o configurazione di sessione.
  • Livelli di isolamento e conflitti di scrittura: Utilizzare quando scritture concorrenti sulla stessa tabella sono in conflitto, o quando un carico di lavoro necessita di garanzie più severe rispetto al livello di isolamento predefinito WriteSerializable. L'isolamento serializzabile riduce la velocità effettiva per le scritture concorrenti. La concorrenza a livello di riga risolve automaticamente molti conflitti tra scritture concorrenti su tabelle che soddisfano i suoi requisiti.
  • Indici di ricerca a testo completo: Usare quando le query cercano nelle colonne di testo sottostringhe o parole con le funzioni search o isearch. L'indice salta i file che non possono contenere righe corrispondenti. Questa funzione è in fase Beta.

Nota

Gli indici del filtro di Bloom sono una funzionalità deprecata di data skipping. Aggiungono sovraccarico di scrittura e sono difficili da ottimizzare. Se le tue tabelle li contieno, consulta gli indici di filtro di Bloom (obsoleti) per sostituirli e rimuoverli.

Altre caratteristiche delle prestazioni

Individuare carichi di lavoro con prestazioni lente o costosi

Se un carico di lavoro è più lento o costoso del previsto e non sai il motivo, usa l'interfaccia di Spark per trovare il collo di bottiglia prima di cambiare configurazione. Vedi Diagnosticare i problemi di costo e prestazioni usando l'interfaccia utente di Spark.