Utilizzo dell'ottimizzatore basato sui costi - Amazon Athena

Utilizzo dell'ottimizzatore basato sui costi

Per ottimizzare le tue query, puoi utilizzare la funzionalità di ottimizzazione basata sui costi (CBO) di Athena SQL. Facoltativamente, puoi richiedere che Athena raccolga statistiche a livello di tabella o colonna per una delle tue tabelle in AWS Glue. Se tutte le tabelle della query contengono statistiche, Athena utilizza le statistiche per creare un piano di esecuzione che ritiene essere il più performante. L'ottimizzatore di query calcola i piani alternativi sulla base di un modello statistico e quindi seleziona quello che sarà probabilmente il più veloce per eseguire la query.

Le statistiche sulle tabelle AWS Glue vengono raccolte e archiviate in AWS Glue Data Catalog e rese disponibili ad Athena per migliorare la pianificazione e l'esecuzione delle query. Queste statistiche sono statistiche a livello di colonna, ad esempio il numero di valori distinti, il numero di valori nulli, massimi e minimi su tipi di file come Parquet, ORC, JSON, ION, CSV e XML. Amazon Athena utilizza queste statistiche per ottimizzare le query applicando i filtri più restrittivi il prima possibile nell'elaborazione delle query. Questo filtro limita l'utilizzo della memoria e il numero di record da leggere per fornire i risultati delle query.

Oltre a CBO, Athena utilizza una funzionalità chiamata ottimizzatore basato su regole (RBO). L'RBO applica meccanicamente delle regole che dovrebbero migliorare le prestazioni delle query. L'RBO di solito è utile perché le sue trasformazioni mirano a semplificare il piano di interrogazione. Tuttavia, poiché l'RBO non esegue calcoli dei costi o confronti tra piani, le query più complicate rendono difficile la creazione di un piano ottimale.

Per questo motivo, per ottimizzare le query Athena utilizza sia RBO che CBO. Dopo aver identificato le opportunità per migliorare l'esecuzione delle query, Athena crea un piano ottimale. Per ulteriori informazioni sui dettagli del piano di esecuzione, consulta Visualizzare i piani di esecuzione per query SQL. Per una discussione dettagliata su come funziona il CBO, consulta Velocizzare le query con l'ottimizzatore dei costi di Amazon Athena nel blog sui big data. AWS

Per generare statistiche per le tabelle del catalogo dati di AWS Glue, è possibile utilizzare la console Athena, la Console AWS Glue o le API AWS Glue. Poiché Athena è integrato con il catalogo dati di AWS Glue, quando esegui le query da Amazon Athena, otterrai automaticamente i miglioramenti corrispondenti delle prestazioni delle query.

Considerazioni e limitazioni

  • Tipi di tabelle: al momento, la funzionalità CBO di Athena supporta solo le tabelle Hive presenti nel AWS Glue Data Catalog.

  • Athena per Spark: la funzionalità CBO non è disponibile in Athena per Spark.

  • Prezzi: per informazioni sui prezzi, consulta la pagina dei prezzi di AWS Glue.

Generazione di statistiche per una tabella tramite la console Athena

In questa sezione viene descritto come usare la console Athena per generare statistiche a livello di tabella o colonna per una tabella in AWS Glue. Per informazioni sull'utilizzo di AWS Glue oer generare statistiche sulle tabelle, consulta Operazioni con le statistiche delle colonne nella Guida per gli sviluppatori di AWS Glue.

Generazione di statistiche per una tabella tramite la console Athena
  1. Aprire la console Athena all'indirizzo https://console.aws.amazon.com/athena/.

  2. Nell'elenco Tabelle dell'editor di query Athena, scegli i tre punti verticali per la tabella desiderata, quindi scegli Genera statistiche.

    Menu contestuale per una tabella nell'editor di query Athena.
  3. Nella finestra di dialogo Genera statistiche, scegli Tutte le colonne per generare le statistiche per tutte le colonne della tabella oppure Colonne selezionate per selezionare colonne specifiche. L'impostazione predefinita è Tutte le colonne.

    La finestra di dialogo Genera statistiche.
  4. Per il ruolo di servizio di AWS Glue, crea o seleziona un ruolo di servizio esistente per assegnare a AWS Glue l'autorizzazione per generare le statistiche. Il ruolo di servizio AWS Glue richiede anche le autorizzazioni S3:GetObject per il bucket Amazon S3 che contiene i dati della tabella.

    Scelta di un ruolo di servizio AWS Glue.
  5. Scegli Genera statistiche. Un banner di notifica Generazione di statistiche per nome_tabella mostra lo stato dell'attività.

    Il banner di notifica Generazione di statistiche.
  6. Per visualizzare i dettagli nella console AWS Glue, scegli Visualizza in Glue.

    Per informazioni sulla visualizzazione delle statistiche nella console AWS Glue, consulta Visualizzazione delle statistiche delle colonne nella Guida per gli sviluppatori di AWS Glue.

  7. Dopo la generazione delle statistiche, le tabelle e le colonne che contengono le statistiche mostrano la parola Statistiche tra parentesi, come nell'immagine seguente.

    Una tabella che mostra le icone statistiche nell'editor di query Athena.

Ora, quando esegui le tue query, Athena eseguirà l'ottimizzazione in base ai costi delle tabelle e delle colonne per le quali sono state generate le statistiche.

Abilitare e disabilitare le statistiche delle tabelle

Quando si generano statistiche di tabella per una tabella Iceberg seguendo i passaggi della sezione precedente, una proprietà della tabella Glue chiamata use_iceberg_statistics viene aggiunta automaticamente alla tabella Iceberg AWS Glue Data Catalog e impostata su true per impostazione predefinita. Se rimuovi questa proprietà o la imposti su false, CBO non utilizzerà le statistiche della tabella Iceberg quando tenta di ottimizzare il piano di query durante l'esecuzione delle query, anche se le statistiche sono state generate da Glue. Per ulteriori informazioni su come generare statistiche tabellari, vedere. Generazione di statistiche per una tabella tramite la console Athena

Al contrario, le tabelle Hive nel Glue Data Catalog non hanno una proprietà di tabella simile per abilitare o disabilitare l'uso delle statistiche delle tabelle per CBO. Di conseguenza, CBO utilizza sempre le statistiche delle tabelle generate da Glue quando cerca di ottimizzare il piano di query per le tabelle Hive.

Risorse aggiuntive

Per ulteriori informazioni consulta le seguenti risorse.

Enhance query performance using AWS Glue Data Catalog statistics (AWS YouTube channel)