Redshift Concurrency Scaling
Einführung
Amazon Redshift ist ein leistungsstarkes Datenlager, das Ihnen hilft, große Datenmengen schnell zu analysieren. Wenn die Datenvolumen und Benutzeranforderungen zunehmen, kann es herausfordernd werden, optimale Abfrageleistungen aufrechtzuerhalten. Hier kommt Redshift Concurrency Scaling ins Spiel.
In diesem Artikel werden die Grundlagen von Redshift Concurrency Scaling behandelt, einschließlich Einrichtungskommandos und Parametern. Wir werden auch besprechen, wie es bei der Verteilung von Arbeitslasten für Hochleistungs- und Hochverfügbarkeitsanwendungen hilft.
Was ist Redshift Concurrency Scaling?
Redshift Concurrency Scaling passt die Cluster-Kapazität für mehr Leseabfragen gleichzeitig an, was einen großen Unterschied macht. Es ändert, wie viele Abfragen Ihre Gruppe gleichzeitig verarbeiten kann, und stellt sicher, dass die Antworten immer schnell und konsistent sind.
Wie funktioniert es? Redshift stellt automatisch zusätzliche temporäre Cluster bereit, wenn Concurrency Scaling aktiviert ist. Dies geschieht jedes Mal, wenn die Anzahl der gleichzeitigen Benutzerabfragen die konfigurierte Warteschlangenschwelle überschreitet. Temporäre Gruppen lesen Abfragen, die Redshift nur in der Warteschlange verarbeiten kann.
Ihre Hauptgruppe kann weiterhin andere Aufgaben ohne Unterbrechung ausführen. Sobald die Warteschlangenlänge unter die Schwelle fällt, beendet das System automatisch die temporären Cluster, um die Kosten zu optimieren.
Einrichtung von Concurrency Scaling
Um die Leistungsfähigkeit von Redshift Concurrency Scaling zu nutzen, müssen Sie es auf Ihrem Cluster aktivieren. So geht’s:
1. Stellen Sie sicher, dass Ihr Cluster mit einem ra3.16xlarge oder höherem Knotentyp ausgeführt wird.
2. Führen Sie den folgenden SQL-Befehl aus, um Concurrency Scaling zu aktivieren:
ALTER CLUSTER <your-cluster-name> SET CONCURRENCY SCALING ENABLED;
3. Konfigurieren Sie den Concurrency Scaling-Modus mit dem SET-Befehl. Es gibt zwei verfügbare Modi:
– AUTO: Redshift verwaltet automatisch die Anzahl der temporären Cluster basierend auf der Arbeitslast. Dies ist der Standardmodus.
– MANUELL: Sie spezifizieren die maximale Anzahl der temporären Cluster.
4. Um den Modus festzulegen, verwenden Sie den folgenden Befehl:
ALTER CLUSTER <your-cluster-name> SET CONCURRENCY SCALING MODE 'AUTO|MANUAL';
5. Wenn Sie den MANUELLEN Modus verwenden, legen Sie die maximale Anzahl der temporären Cluster fest:
ALTER CLUSTER <your-cluster-name> SET CONCURRENCY SCALING MAX_CLUSTERS <number>;
Arbeitslastverteilung mit Abfragewarteschlangen
Redshift Concurrency Scaling arbeitet Hand in Hand mit Abfragewarteschlangen, um Arbeitslasten effizient über Ihr Cluster und temporäre Cluster zu verteilen. Abfragewarteschlangen ermöglichen es Ihnen, verschiedene Arten von Abfragen basierend auf deren Wichtigkeit und Ressourcenanforderungen zu priorisieren und zu verwalten.
Standardmäßig hat Redshift eine einzige Standardwarteschlange. Sie können jedoch zusätzliche Warteschlangen erstellen, um Arbeitslasten zu trennen und zu priorisieren. Hier ist ein Beispiel für die Erstellung einer neuen Abfragewarteschlange:
CREATE QUEUE reporting_queue PRIORITY 5 QUERY_GROUP 'reporting';
In diesem Beispiel erstellen wir eine Reporting-Warteschlange mit einer Priorität von 5. Wir verknüpfen dann die Reporting-Warteschlange mit einer Abfragegruppe namens ‘reporting’. Abfragen, die in diese Warteschlange eingereicht werden, haben eine höhere Priorität als die in der Standardwarteschlange.
Um Abfragen zu bestimmten Warteschlangen zu leiten, können Sie den SET-Befehl verwenden:
SET query_group TO 'reporting';
Diese Aktion setzt die Abfragegruppe der aktuellen Sitzung auf ‘reporting’ und das System leitet nachfolgende Abfragen an die zugehörige Warteschlange weiter.
Concurrency Scaling-Parameter für hohe Verfügbarkeit
Beim Konfigurieren von Redshift Concurrency Scaling für Hochverfügbarkeitsanwendungen gibt es mehrere wichtige Parameter zu beachten:
- max_concurrency_scaling_clusters: Dieser Parameter gibt an, wie viele temporäre Cluster maximal bereitgestellt werden können. Stellen Sie ihn basierend auf Ihren Arbeitslastanforderungen und Budgetbeschränkungen ein.
- concurrency_scaling_mode: Wie bereits erwähnt, bestimmt dieser Parameter, ob Concurrency Scaling automatisch oder manuell verwaltet wird.
- wlm_query_slot_count: Dieser Parameter legt die Anzahl der Abfrageslots (gleichzeitige Abfragen) pro Cluster fest. Passen Sie ihn basierend auf Ihren Arbeitslasteigenschaften und verfügbaren Ressourcen an.
- query_group: Verwenden Sie Abfragegruppen, um Abfragen spezifischen Warteschlangen zuzuordnen und kritische Arbeitslasten zu priorisieren.
Hier ist ein Beispiel für eine Konfiguration für eine Hochverfügbarkeits-Setup:
ALTER CLUSTER <your-cluster-name> SET CONCURRENCY SCALING MAX_CLUSTERS 5; ALTER CLUSTER <your-cluster-name> SET CONCURRENCY SCALING MODE 'AUTO'; ALTER CLUSTER <your-cluster-name> 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 diesem Beispiel werden wir bis zu 5 temporäre Cluster haben. Wir aktivieren auch automatisches Concurrency Scaling. Zusätzlich weisen wir 50 Abfrageslots pro Cluster zu. Wir erstellen zwei Warteschlangen, critical_queue und reporting_queue, mit unterschiedlichen Prioritäten, um kritische und Reporting-Arbeitslasten separat zu handhaben.
Echtwelt-Beispiel
Betrachten wir ein reales Szenario, in dem ein E-Commerce-Unternehmen Redshift für ihre Datenlageranforderungen verwendet. Während geschäftiger Verkaufszeiten erhalten sie viele Anfragen von verschiedenen Abteilungen wie Verkauf, Inventar und Kundenanalyse.
Um diese erhöhte Arbeitslast zu bewältigen, aktivieren sie Redshift Concurrency Scaling mit der folgenden Konfiguration:
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';
Wenn zu viele Abfragen gleichzeitig ausgeführt werden, erstellt Redshift mehr temporäre Cluster, um die Arbeitslast zu verwalten. Die Abfragen werden effizient in den Hauptcluster und die temporären Cluster verteilt, basierend auf ihren zugewiesenen Abfragegruppen und Warteschlangenprioritäten.
Als Ergebnis erhält das E-Commerce-Unternehmen während der Spitzenzeiten optimale Abfrageleistungen und gewährleistet rechtzeitige Einblicke für kritische Geschäftsentscheidungen. Die Abfragen zur Verkaufsanalyse erhalten die höchste Priorität, gefolgt von der Inventarverwaltung und Kundensegmentierungsabfragen.
Fazit
Redshift Concurrency Scaling ermöglicht es Ihnen, die Kapazität Ihres Clusters so anzupassen, dass plötzliche Abfrageanstiege effizient gehandhabt werden können. Durch die Nutzung von Abfragewarteschlangen und die Konfiguration der Ressourcenverteilung können Sie Arbeitslasten effizient verteilen und kritische Abfragen für Hochleistungs- und Hochverfügbarkeitsanwendungen priorisieren.
Denk daran, Faktoren wie Arbeitslasteigenschaften, Ressourcenkapazität und Budget bei der Konfiguration von Concurrency Scaling zu berücksichtigen. Mit der richtigen Einrichtung können Sie das volle Potenzial von Redshift ausschöpfen und Ihren Nutzern blitzschnelle Abfrageleistungen bieten.
Für weitere Informationen zu Redshift Concurrency Scaling konsultieren Sie bitte die offizielle AWS-Dokumentation:
DataSunrise: Verbesserung der Datenbank-Sicherheit und Compliance
Während Redshift robuste Funktionen für Leistung und Skalierbarkeit bietet, ist die Sicherstellung der Sicherheit und Compliance Ihrer Daten ebenso wichtig. DataSunrise bietet benutzerfreundliche und flexible Tools für Datenbanksicherheit, Maskierung und Compliance. Mit DataSunrise können Sie Hochverfügbarkeitskonfigurationen implementieren und Ihre sensiblen Daten schützen.
Um mehr über die Lösungen von DataSunrise zu erfahren und sie in Aktion zu sehen, besuchen Sie unsere Website und vereinbaren Sie noch heute Ihre persönliche Demonstration!