Condividi tramite


Eliminazione dinamica dei file

L'eliminazione dinamica dei file può migliorare significativamente le prestazioni di molte query nelle tabelle Delta Lake. Trigger dinamici di eliminazione dei file basati sulle decisioni del Query Optimizer, e per le query che contengono istruzioni di filtro o clausole WHERE. È necessario usare il calcolo abilitato per Photon per garantire l'uso della potatura dinamica dei file nelle MERGE, UPDATE e DELETE istruzioni. Solo SELECT le istruzioni garantiscono l'uso dell'eliminazione dinamica dei file quando Photon non viene usato.

L'eliminazione dinamica dei file è particolarmente efficiente per le tabelle non partizionate o per i join su colonne non partizionate. L'effetto delle prestazioni dell'eliminazione dinamica dei file è spesso correlato al clustering dei dati, quindi è consigliabile usare L'ordinamento Z per ottimizzare il vantaggio.

Per il background e i casi d'uso dell'eliminazione dinamica dei file, vedere Query SQL più veloci in Delta Lake con eliminazione dinamica dei file.

Configurazione

L'eliminazione dinamica dei file è controllata dalle opzioni di configurazione di Apache Spark seguenti:

  • spark.databricks.optimizer.dynamicFilePruning (impostazione predefinita è true): il Flag principale che indirizza l'ottimizzatore ad applicare i filtri in profondità. Se impostato su false, l'eliminazione dinamica dei file non sarà effettiva.
  • spark.databricks.optimizer.deltaTableSizeThreshold (impostazione predefinita è 10,000,000,000 bytes (10 GB)): rappresenta le dimensioni minime (in byte) della tabella Delta sul lato probe del join necessario per attivare l'eliminazione dinamica dei file. Se il lato probe non è molto grande, probabilmente non vale la pena applicare i filtri e possiamo semplicemente scansionare l'intera tabella. È possibile trovare le dimensioni di una tabella Delta eseguendo il comando DESCRIBE DETAIL table_name e quindi esaminando la colonna sizeInBytes.
  • spark.databricks.optimizer.deltaTableFilesThreshold (impostazione predefinita è 10): rappresenta il numero di file della tabella Delta sul lato probe del join necessario per attivare l'eliminazione dinamica dei file. Quando la tabella sul lato probe contiene meno file rispetto alla soglia predefinita, l'eliminazione dinamica dei file non viene attivata. Se una tabella contiene solo alcuni file, probabilmente non è utile abilitare l'eliminazione dinamica dei file. È possibile trovare le dimensioni di una tabella Delta eseguendo il comando DESCRIBE DETAIL table_name e quindi esaminando la colonna numFiles.