
Ottimizzazione delle Prestazioni delle Query con Redshift Concurrency Scaling

Introduzione
Amazon Redshift è un potente data warehouse che ti aiuta ad analizzare rapidamente grandi quantità di dati. Man mano che i volumi di dati crescono e le esigenze degli utenti aumentano, mantenere prestazioni ottimali delle query può diventare una sfida. Ecco dove entra in gioco Redshift Concurrency Scaling.
Questo articolo coprirà le basi di Redshift Concurrency Scaling, inclusi i comandi di installazione e i parametri. Discuteremo anche di come aiuti a distribuire i carichi di lavoro per applicazioni ad alte prestazioni e alta disponibilità.
Che Cos’è il Redshift Concurrency Scaling?
Redshift Concurrency Scaling regola la capacità del cluster per più query di lettura contemporaneamente, facendo una grande differenza. Modifica il numero di domande che il tuo gruppo può gestire contemporaneamente, assicurando che le risposte siano sempre rapide e coerenti.
Come funziona? Redshift provvede automaticamente alla creazione di cluster temporanei aggiuntivi quando Concurrency Scaling è attivato. Ciò accade ogni volta che il numero di query degli utenti simultanei supera la soglia della coda configurata. I gruppi temporanei leggono le query che Redshift può gestire solo in coda.
Il tuo gruppo principale può continuare a lavorare su altre attività senza interruzioni. Una volta che la dimensione della coda scende al di sotto della soglia, il sistema termina automaticamente i cluster temporanei per ottimizzare i costi.
Configurazione del Concurrency Scaling
Per sfruttare il potere di Redshift Concurrency Scaling, è necessario abilitarlo sul tuo cluster. Ecco come:
1. Assicurati che il tuo cluster stia utilizzando un nodo ra3.16xlarge o superiore.
2. Esegui il seguente comando SQL per abilitare il Concurrency Scaling:
ALTER CLUSTER <> SET CONCURRENCY SCALING ENABLED;
3. Configura la modalità Concurrency Scaling usando il comando SET. Sono disponibili due modalità:
– AUTO: Redshift gestisce automaticamente il numero di cluster temporanei in base al carico di lavoro. Questa è la modalità predefinita.
– MANUAL: Specifici il numero massimo di cluster temporanei.
4. Per impostare la modalità, usa il seguente comando:
ALTER CLUSTER <> SET CONCURRENCY SCALING MODE 'AUTO|MANUAL';
5. Se usi la modalità MANUAL, imposta il numero massimo di cluster temporanei:
ALTER CLUSTER <> SET CONCURRENCY SCALING MAX_CLUSTERS < >;
Distribuzione del Carico di Lavoro con Query Queues
Redshift Concurrency Scaling lavora in sinergia con le query queues per distribuire efficacemente i carichi di lavoro tra il tuo cluster e i cluster temporanei. Le query queues ti permettono di prioritizzare e gestire diversi tipi di query in base alla loro importanza e ai requisiti di risorsa.
Di default, Redshift ha una singola coda predefinita. Tuttavia, puoi creare code aggiuntive per segregare e prioritizzare i carichi di lavoro. Ecco un esempio di creazione di una nuova query queue:
CREATE QUEUE reporting_queue PRIORITY 5 QUERY_GROUP 'reporting';
In questo esempio, creiamo una coda di reportistica con una priorità di 5. Colleghiamo quindi la coda di reportistica a un gruppo di query chiamato ‘reporting’. Le query inviate a questa coda avranno priorità superiore rispetto a quelle nella coda predefinita.
Per instradare le query a code specifiche, puoi usare il comando SET:
SET query_group TO 'reporting';
Questa azione imposta il gruppo di query della sessione corrente su ‘reporting’ e il sistema instraderà le query successive alla coda associata.
Parametri del Concurrency Scaling per Alta Disponibilità
Quando configuri Redshift Concurrency Scaling per applicazioni ad alta disponibilità, ci sono diversi parametri chiave da considerare:
- max_concurrency_scaling_clusters: Questo parametro specifica il numero massimo di cluster temporanei che possono essere creati. Impostalo in base ai requisiti del tuo carico di lavoro e alle limitazioni del budget.
- concurrency_scaling_mode: Come menzionato in precedenza, questo parametro determina se il Concurrency Scaling è gestito automaticamente o manualmente.
- wlm_query_slot_count: Questo parametro imposta il numero di slot di query (query simultanee) per cluster. Regolalo in base alle caratteristiche del tuo carico di lavoro e alle risorse disponibili.
- query_group: Usa i gruppi di query per instradare le query a code specifiche e prioritizzare i carichi di lavoro critici.
Ecco un esempio di configurazione per un’impostazione ad alta disponibilità:
ALTER CLUSTER <> SET CONCURRENCY SCALING MAX_CLUSTERS 5; ALTER CLUSTER < > SET CONCURRENCY SCALING MODE 'AUTO'; ALTER CLUSTER < > SET wlm_query_slot_count 50; CREATE QUEUE critical_queue PRIORITY 10 QUERY_GROUP 'critical'; CREATE QUEUE reporting_queue PRIORITY 5 QUERY_GROUP 'reporting';
In questo esempio, avremo fino a 5 cluster temporanei. Attiveremo anche il Concurrency Scaling automatico. Inoltre, assegneremo 50 slot di query per cluster. Creiamo due code, critical_queue e reporting_queue, con priorità diverse per gestire separatamente i carichi di lavoro critici e di reportistica.
Esempio Reale
Consideriamo uno scenario reale in cui un’azienda di e-commerce utilizza Redshift per le loro esigenze di data warehousing. Durante i periodi di vendita elevata, ricevono molte richieste da diversi dipartimenti come vendite, inventario e analisi dei clienti.
Per gestire questo aumento del carico di lavoro, abilitano Redshift Concurrency Scaling con la seguente configurazione:
ALTER CLUSTER ecommerce_cluster SET CONCURRENCY SCALING ENABLED; ALTER CLUSTER ecommerce_cluster SET CONCURRENCY SCALING MODE 'AUTO'; ALTER CLUSTER ecommerce_cluster SET CONCURRENCY SCALING MAX_CLUSTERS 10; CREATE QUEUE sales_analytics_queue PRIORITY 8 QUERY_GROUP 'sales_analytics'; CREATE QUEUE inventory_queue PRIORITY 6 QUERY_GROUP 'inventory'; CREATE QUEUE customer_segmentation_queue PRIORITY 4 QUERY_GROUP 'customer_segmentation';
Quando troppe query sono in esecuzione contemporaneamente, Redshift creerà più cluster temporanei per gestire il carico di lavoro. Le query vengono distribuite in modo efficiente tra il cluster principale e i cluster temporanei in base ai gruppi di query assegnati e alle priorità delle code.
Di conseguenza, l’azienda di e-commerce mantiene prestazioni ottimali delle query durante i periodi di picco, garantendo approfondimenti tempestivi per decisioni aziendali critiche. Le query di analisi delle vendite ricevono la priorità più alta, seguite dalla gestione dell’inventario e dalle query di segmentazione dei clienti.
Conclusione
Redshift Concurrency Scaling ti consente di regolare la capacità del tuo cluster per gestire aumenti improvvisi delle query in modo efficiente. Sfruttando le query queues e configurando l’allocazione delle risorse, puoi distribuire i carichi di lavoro in modo efficiente e prioritizzare le query critiche per applicazioni ad alte prestazioni e alta disponibilità.
Ricorda di considerare fattori come le caratteristiche del carico di lavoro, la disponibilità delle risorse e il budget quando configuri il Concurrency Scaling. Con la giusta configurazione, puoi sbloccare tutto il potenziale di Redshift e fornire prestazioni velocissime delle query ai tuoi utenti.
Per ulteriori informazioni su Redshift Concurrency Scaling, consulta la documentazione ufficiale di AWS:
DataSunrise: Migliorare la Sicurezza e la Conformità del Database
Mentre Redshift fornisce robuste funzionalità per prestazioni e scalabilità, garantire la sicurezza e la conformità dei tuoi dati è altrettanto importante. DataSunrise offre strumenti user-friendly e flessibili per la sicurezza del database, mascheramento e conformità. Con DataSunrise, puoi implementare configurazioni ad alta disponibilità e proteggere i tuoi dati sensibili.
Per saperne di più sulle soluzioni di DataSunrise e vederle in azione, visita il nostro sito web e prenota la tua dimostrazione personalizzata oggi stesso!