2016-07-01 3 views
1

Wir migrieren unsere Datenbank von SQL Server 2012 zu Amazon Redshift.Abfrage beendet in Redshift

Das Frontend unserer Anwendung wird in MicroStrategy (MSTR) entwickelt, das die Abfragen auf Redshift abfeuert.

Obwohl die Anwendung in der Produktion (auf SQL Server 2012) einwandfrei funktioniert, haben wir in unserer PoC-Umgebung auf Redshift ein seltsames Problem festgestellt.

Als wir ein Dashboard in MSTR gestartet haben, trifft die Abfrage aus dem Dashboard auf Redshift und wird erfolgreich ohne Probleme abgeschlossen.

Wenn wir jedoch die Anwendung testen, indem Sie alle Dashboards gleichzeitig ausführen, endet die Abfrage dieses bestimmten Dashboards in Redshift. Die Datenbank wirft keine Fehlermeldung, weshalb wir nicht beheben können, warum die Abfrage beendet wird.

Kann jemand bitte vorschlagen, wie wir über die Lösung dieses Problems gehen sollten.

Danke

Antwort

2

Das Problem könnte sein, dass Sie einige Timeout in der Warteschlange haben, dass Sie die Abfrage mit WLM configuration senden.

Redshift ist anders als andere DB ausgelegt, um für analytische Abfragen optimiert zu werden. Aus diesem Grund werden Abfrageergebnisse nicht wie bei OLTP DB zwischengespeichert. Der andere Unterschied ist, dass Sie eine vordefinierte Ebene gleichzeitig haben (auch Teil von WLM - http://docs.aws.amazon.com/redshift/latest/mgmt/workload-mgmt-config.html). Jeder Nebenläufigkeits-Slot verfügt über zugewiesene Ressourcen, um große Abfragen schnell abzuschließen, begrenzt jedoch die Anzahl gleichzeitiger Abfragen, die ausgeführt werden können. Die Standardkonfiguration ist 5 und Sie können sie auf 50 erhöhen. Die Empfehlung lautet, sie auf nicht mehr als 15-20 zu erhöhen. Wie bei 50 bedeutet dies, dass jede Abfrage nur 2% der Clusterressource erhält 20% (mit 5) oder 5% (mit 20). Die Kombination dieser zwei Unterschiede ist: Wenn Sie viele Dashboards verbinden, sendet jedes seine Anfragen an Redshift, konkurriert um die Ressourcen (ohne Caching wird jede Abfrage immer wieder ausgeführt), und könnte Timeout oder einfach nur sein langsam für ein interaktives Dashboard.

Bitte stellen Sie sicher, dass Sie die Redshift-optimierten Treiber für MicroStrategy verwenden, die unter den obigen Annahmen Anfragen an Redshift senden.

Sie können auch einige RDS zwischen Ihren Dashboards und Redshift einfügen, mit den Aggregationsdaten, die Sie für Ihre Dashboards benötigen und die In-Memory-Caching und höhere Parallelität für diese Übersichtsdaten verwenden können. Sie können ein interessantes Muster sehen, das Sie mit pg-bouncer see here implementieren können, das Ihnen helfen kann, einige Abfragen (die analytischen) an Redshift zu senden, und einige (die aggregierten Dashboards) an ein PostgreSQL.