Ich habe festgestellt, dass das erste Mal, wenn ich eine Abfrage auf RedShift ausführen, dauert es 3-10 Sekunden. Wenn ich dieselbe Abfrage erneut ausführen, sogar mit unterschiedlichen Argumenten in der WHERE-Bedingung, läuft sie schnell (0,2 Sekunden). Abfrage, über die ich sprach, läuft auf einer Tabelle von ~ 1M Zeilen, auf 3 ganzzahligen Spalten.Lange Laufzeit, wenn Abfrage zum ersten Mal in RedShift
Wird dieser große Unterschied in den Ausführungszeiten dadurch verursacht, dass RedShift die Abfrage zum ersten Mal kompiliert und dann den kompilierten Code erneut verwendet?
Wenn ja - wie behalte ich diesen Cache kompilierter Abfragen immer warm?
Eine weitere Frage: Gegeben QueryA und QueryB. Nehmen wir an, dass queryA zuerst kompiliert und ausgeführt wurde. Wie ähnlich sollte queryB zu queryA sein, sodass die Ausführung von queryB den für queryA kompilierten Code verwendet?
Dies ist absolut richtig. Ich vertiefte mich tiefer in herauszufinden, was genau verursacht eine Neukompilierung des Codes: https://medium.com/@pingram/redshift-code-compilation-977143576e89 – Phil
Wie können Sie sagen, ob das zweite Mal, das Ergebnis nicht kommt aus einem zwischengespeicherten Ergebnis? Können Sie wirklich auf die Ausführungszeit für den zweiten Versuch derselben Abfrage für Leistungstests zählen? Ein weiterer Link http://docs.aws.amazon.com/redshift/latest/dg/c-query-performance.html – Faiz
Sie können die Auswirkungen der Abfrage kompilieren isoliert testen, indem Sie verschiedene Abfragen auf eine leere Tabelle, um Daten zu beseitigen Caching als Variable. Ich fand, dass die Latenz der Abfragekompilierung mit der Komplexität der Abfrage skaliert: insbesondere die Anzahl der beteiligten Tabellen und Joins. Siehe: http://wrschneider.github.io/2017/06/02/redshift-compile-latency.html – wrschneider