DataSunrise Consegue la Certificazione AWS DevOps Competency per AWS DevSecOps e Monitoraggio, Logging e Performance

Ottimizzazione delle Prestazioni delle Query con Redshift Concurrency Scaling

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:

  1. 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.
  2. concurrency_scaling_mode: Come menzionato in precedenza, questo parametro determina se il Concurrency Scaling è gestito automaticamente o manualmente.
  3. 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.
  4. 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!

Successivo

Sicurezza nel SQL Server

Sicurezza nel SQL Server

Scopri di più

Ha bisogno del nostro team di supporto?

I nostri esperti saranno lieti di rispondere alle Sue domande.

Countryx
United States
United Kingdom
France
Germany
Australia
Afghanistan
Islands
Albania
Algeria
American Samoa
Andorra
Angola
Anguilla
Antarctica
Antigua and Barbuda
Argentina
Armenia
Aruba
Austria
Azerbaijan
Bahamas
Bahrain
Bangladesh
Barbados
Belarus
Belgium
Belize
Benin
Bermuda
Bhutan
Bolivia
Bosnia and Herzegovina
Botswana
Bouvet
Brazil
British Indian Ocean Territory
Brunei Darussalam
Bulgaria
Burkina Faso
Burundi
Cambodia
Cameroon
Canada
Cape Verde
Cayman Islands
Central African Republic
Chad
Chile
China
Christmas Island
Cocos (Keeling) Islands
Colombia
Comoros
Congo, Republic of the
Congo, The Democratic Republic of the
Cook Islands
Costa Rica
Cote D'Ivoire
Croatia
Cuba
Cyprus
Czech Republic
Denmark
Djibouti
Dominica
Dominican Republic
Ecuador
Egypt
El Salvador
Equatorial Guinea
Eritrea
Estonia
Ethiopia
Falkland Islands (Malvinas)
Faroe Islands
Fiji
Finland
French Guiana
French Polynesia
French Southern Territories
Gabon
Gambia
Georgia
Ghana
Gibraltar
Greece
Greenland
Grenada
Guadeloupe
Guam
Guatemala
Guernsey
Guinea
Guinea-Bissau
Guyana
Haiti
Heard Island and Mcdonald Islands
Holy See (Vatican City State)
Honduras
Hong Kong
Hungary
Iceland
India
Indonesia
Iran, Islamic Republic Of
Iraq
Ireland
Isle of Man
Israel
Italy
Jamaica
Japan
Jersey
Jordan
Kazakhstan
Kenya
Kiribati
Korea, Democratic People's Republic of
Korea, Republic of
Kuwait
Kyrgyzstan
Lao People's Democratic Republic
Latvia
Lebanon
Lesotho
Liberia
Libyan Arab Jamahiriya
Liechtenstein
Lithuania
Luxembourg
Macao
Madagascar
Malawi
Malaysia
Maldives
Mali
Malta
Marshall Islands
Martinique
Mauritania
Mauritius
Mayotte
Mexico
Micronesia, Federated States of
Moldova, Republic of
Monaco
Mongolia
Montserrat
Morocco
Mozambique
Myanmar
Namibia
Nauru
Nepal
Netherlands
Netherlands Antilles
New Caledonia
New Zealand
Nicaragua
Niger
Nigeria
Niue
Norfolk Island
North Macedonia, Republic of
Northern Mariana Islands
Norway
Oman
Pakistan
Palau
Palestinian Territory, Occupied
Panama
Papua New Guinea
Paraguay
Peru
Philippines
Pitcairn
Poland
Portugal
Puerto Rico
Qatar
Reunion
Romania
Russian Federation
Rwanda
Saint Helena
Saint Kitts and Nevis
Saint Lucia
Saint Pierre and Miquelon
Saint Vincent and the Grenadines
Samoa
San Marino
Sao Tome and Principe
Saudi Arabia
Senegal
Serbia and Montenegro
Seychelles
Sierra Leone
Singapore
Slovakia
Slovenia
Solomon Islands
Somalia
South Africa
South Georgia and the South Sandwich Islands
Spain
Sri Lanka
Sudan
Suriname
Svalbard and Jan Mayen
Swaziland
Sweden
Switzerland
Syrian Arab Republic
Taiwan, Province of China
Tajikistan
Tanzania, United Republic of
Thailand
Timor-Leste
Togo
Tokelau
Tonga
Trinidad and Tobago
Tunisia
Turkey
Turkmenistan
Turks and Caicos Islands
Tuvalu
Uganda
Ukraine
United Arab Emirates
United States Minor Outlying Islands
Uruguay
Uzbekistan
Vanuatu
Venezuela
Viet Nam
Virgin Islands, British
Virgin Islands, U.S.
Wallis and Futuna
Western Sahara
Yemen
Zambia
Zimbabwe
Choose a topicx
Informazioni generali
Vendite
Servizio clienti e supporto tecnico
Richieste di collaborazione e alleanza
Informazioni generali:
info@datasunrise.com
Servizio clienti e supporto tecnico:
support.datasunrise.com
Richieste di collaborazione e alleanza:
partner@datasunrise.com