Condividi tramite


Eliminazione dinamica dei file

L'eliminazione dinamica dei file può migliorare significativamente le prestazioni di molte query nelle tabelle Delta Lake. Trigger di eliminazione dinamica dei file per le query che contengono istruzioni di filtro o clausole WHERE. È necessario usare il calcolo Photon abilitato per utilizzare l'eliminazione dinamica dei file nelle istruzioni MERGE, UPDATEe DELETE. Solo le istruzioni SELECT sfruttano l'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'impatto sulle prestazioni dell'eliminazione dinamica dei file è spesso correlato al clustering dei dati, quindi è consigliabile usare Z-Ordering 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.