Hallo,
ich setze Firebird 1.52 unter Windows XP Pro SP2 P4 3GHz 512 MB RAM ein. Es handelt sich um eine Gebäude-Leittechnik Software.
Die DB wird in 7/24 Studen-Betrieb gefahren. Belastung: jeden Tag ca. 1 Million neue Datensätze, wobei jeder Eintrag innerhalb der DB zusätzliche interne Einträge in mehreren anderen Tabellen über SP und Trigger nach sich zieht. Alle Datensätze, die älter als 7 Tage sind, werden Nachts gelöscht, anschließend ein Backup und dann ein Sweep.
Im Prinzip wird die DB mit dem Job noch fertig. Problematisch ist aber, wenn eine Abfrage (z.B. für Chart) über die 7 Millionen Datenätze erstellt wird.
Wurde die DB neu erstellt, dauert es nur wenige Sekunden. Sobald die DB aber so gefüllt ist, dass nach 7 Tagen die erste Million Datensätze gelöscht werden. wird die Abfrage jeden Tag langsamer. Dauert teilweise bis über 15 Minuten.
Der Aufbau der Tabelle ist recht simpel:
Integer
Timestamp
Integer
Double
Integer
Integer
PK ist 1. Integer-Feld mit Timestamp
Zusätzlich noch über die selben Felder einen Index in andere Sortierrichtung.
Die Abfrage : Select * from historie where Integer1 = x and Timestamp > ... and Timestamp < .....
Hat jemand Optimierungsvorschläge ?
ich setze Firebird 1.52 unter Windows XP Pro SP2 P4 3GHz 512 MB RAM ein. Es handelt sich um eine Gebäude-Leittechnik Software.
Die DB wird in 7/24 Studen-Betrieb gefahren. Belastung: jeden Tag ca. 1 Million neue Datensätze, wobei jeder Eintrag innerhalb der DB zusätzliche interne Einträge in mehreren anderen Tabellen über SP und Trigger nach sich zieht. Alle Datensätze, die älter als 7 Tage sind, werden Nachts gelöscht, anschließend ein Backup und dann ein Sweep.
Im Prinzip wird die DB mit dem Job noch fertig. Problematisch ist aber, wenn eine Abfrage (z.B. für Chart) über die 7 Millionen Datenätze erstellt wird.
Wurde die DB neu erstellt, dauert es nur wenige Sekunden. Sobald die DB aber so gefüllt ist, dass nach 7 Tagen die erste Million Datensätze gelöscht werden. wird die Abfrage jeden Tag langsamer. Dauert teilweise bis über 15 Minuten.
Der Aufbau der Tabelle ist recht simpel:
Integer
Timestamp
Integer
Double
Integer
Integer
PK ist 1. Integer-Feld mit Timestamp
Zusätzlich noch über die selben Felder einen Index in andere Sortierrichtung.
Die Abfrage : Select * from historie where Integer1 = x and Timestamp > ... and Timestamp < .....
Hat jemand Optimierungsvorschläge ?
Comment