Autor Beitrag
funcry
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 110
Erhaltene Danke: 1

Win7 64, XP 32
C# (VS 2010 EE), Delphi (TD 2006 Win32)
BeitragVerfasst: So 21.10.07 11:17 
Ich habe eine kleine Anwendung geschaffen, die relativ viele Daten sammelt. Meine Tests haben ergeben, dass nach etwa zwei Jahren Betrieb mit Geschwindigkeitsproblemen zu rechnen ist, weil sich immer mehr Daten ansammeln. Einige Optimierungen (Trigger, Indizes, keine nested Abfragen) habe ich schon umgesetzt, jedoch scheint mir, dass ich am Löschen von Datensätzen langfristig nicht vorbei komme.

Wobei der benötigte Speicherplatz nicht das Problem ist, sondern nur die Performane ab einer Datenbankgröße von etwa 1 GB. Auch wenn bei dieser Größe die SQL-Abfragen in Summe bei Interaktion des Anwenders nur 4-5 Sekunden dauern, ist das schon zuviel, weil man nicht mehr flüssig damit arbeiten kann.

Momentan spiele ich mit dem Gedanken, beim Insert von neuen Datensätzen per Trigger alte Datensätze zu löschen und in eine Backup-Datenbank zu verschieben.

Als Anfänger in der Datenbankprogrammierung frage ich aus dem Bauch heraus, ob es vielleicht Löschstrategien oder Backupstrategien gibt, bei denen das Datenbanksystem oder die Sprache SQL selbst eine Hilfestellung bietet, die über das manuelle Löschen hinaus geht, oder ob es andere Ansätze gibt die eleganter sind als mein derzeitiger Lösch-Ansatz.
mkinzler
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 4106
Erhaltene Danke: 13


Delphi 2010 Pro; Delphi.Prism 2011 pro
BeitragVerfasst: So 21.10.07 11:22 
Die Größe der Datenbank sollte keinen Einfluß auf die Performance haben. Man könnte statt zu löschen die Abfrage anpassen.

_________________
Markus Kinzler.
funcry Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 110
Erhaltene Danke: 1

Win7 64, XP 32
C# (VS 2010 EE), Delphi (TD 2006 Win32)
BeitragVerfasst: So 21.10.07 16:11 
Dessen war ich mir nicht komplett bewusst, danke für den Hinweis. Ich habe jetzt alle SQL-befehle durchgemessen, und dabei entdeckt, dass mir ein Index noch gefehlt hat. Jetzt laufen alle Abfragen zusammen (~5 komplexe SQL Querys) unter 0,2 Sec ab. Um es auf 0,1 Sec zu drücken muss vermutlich nur noch sehr wenig an den Indizes geändert werden. Kein Vergleich zu vorher 4 Sec bei einer Datenbankgröße von ~1 GB.