Effizientes Abschneiden von Zeitstempeln auf 5-Minuten-Grenzen in Postgres
Das Abschneiden von Zeitstempeln ist für die zeitliche Analyse unerlässlich. Postgres bietet die Funktion date_trunc, mit der wir Zeitstempel auf verschiedene Einheiten runden können. Für die Kürzung auf die nächste 5-Minuten-Grenze ist jedoch ein spezifischerer Ansatz erforderlich.
Normalerweise wird die folgende einfache Methode verwendet:
date_trunc('hour', val) + date_part('minute', val)::int / 5 * interval '5 min'
Wenn die Leistung jedoch kritisch ist, Es ist entscheidend, die schnellstmögliche Lösung zu finden.
Alternativer Ansatz: Durch die Epoche gehen Zeit
Ein alternativer Ansatz besteht darin, den Zeitstempel in einen Epochenzeitstempel umzuwandeln und ihn dann zu kürzen. Diese Methode wird ausgedrückt als:
SELECT to_timestamp( floor(EXTRACT(epoch FROM ht.time) / EXTRACT(epoch FROM interval '5 min')) * EXTRACT(epoch FROM interval '5 min') ) FROM huge_table AS ht LIMIT 4000000
Benchmarking und Ergebnisse
Um die Leistung beider Methoden zu bewerten, wurde ein informeller Benchmark anhand einer großen Tabelle mit 4 Millionen durchgeführt Reihen. Die Abfragen wurden abgewechselt, um Caching-Vorteile zu verhindern.
Ergebnisse:
Method | Run 1 | Run 3 | Run 5 |
---|---|---|---|
Epoch Time | 39.368 seconds | 39.526 seconds | 39.883 seconds |
Hour and Minute | 34.189 seconds | 37.028 seconds | 32.397 seconds |
Fazit
Überraschenderweise verwendet die Methode date_trunc und date_part übertrafen den Epochenzeit-Ansatz durchweg. Obwohl die Epochenzeitmethode vielseitiger und einfacher zu parametrisieren ist, opfert sie etwas Leistung für einen größeren Bereich von Kürzungen von Zeiteinheiten.
Daher ist für die Kürzung von Zeitstempeln auf 5-Minuten-Grenzen speziell in Postgres die unkomplizierte Methode mit date_trunc und date_part ist der empfohlene Ansatz.
Das obige ist der detaillierte Inhalt vonWas ist der schnellste Weg, Zeitstempel in PostgreSQL auf 5-Minuten-Intervalle zu kürzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!