Wir haben eine Tabelle in einer PostgreSQL-Datenbank, die in der Größenordnung von Millionen von Zeilen pro Tag wächst.
Jede Zeile besteht aus:
ID
Foreign user ID
Date and time
Other data
Datum und Uhrzeit sind nicht streng monoton ID
, sie liegen jedoch nahe beieinander.
Bei der Abfrage dieser Tabelle sind wir nur daran interessiert, Zeilen für eine bestimmte ausländische Benutzer-ID mit Datum und Uhrzeit in den letzten zwei Wochen abzurufen. Zeilen, die älter als zwei Wochen sind, werden niemals abgefragt. Wir möchten sie jedoch zu Archivierungszwecken aufbewahren.
Angesichts dieses speziellen Anwendungsfalls:
- Sollten wir einen Index für die Datums- und Zeitspalte haben?
- Gibt es einen Hinweis darauf, dass Datum und Uhrzeit mit der ID (fast) monoton zunehmen?
- Sollten wir versuchen, Zeilen zu entfernen, die älter als zwei Wochen sind, wird dies wahrscheinlich die Leistung verbessern?
quelle
active
Flag könnte verwendet werden, um einenactive = false
active
in diesem Fall nur partitionieren und den Ausschluss von Einschränkungen verwenden, da Sie die Daten sowieso neu schreiben; gleiche Idee und guter Punkt.