Performanz und Mengengerüst

Den Durchsatz verbessern

Top  Previous  Next

Wenn sie die Geschwindigkeit von Datenbank-Operationen erhöhen möchten, sollen Sie folgende Möglichkeiten in Betracht ziehen:

Um die Geschwindigkeit von Abfragen zu erhöhen sind zusätzliche Indexe meist die erste Wahl. Wenn in der Anwendung häufig bestimmte Werte von Spalte1 gesucht werden, dann wird ein Index über Spalte1 diese Suche erheblich beschleunigen vorausgesetzt, die Tabelle enthält eine größere Anzahl an Datensätzen.

Manchmal ist auch das Gegenteil davon, nämlich Indexe zu entfernen, die richtige Optimierung. Indexe beschleunigen nämlich die Suche, verlangsamen aber alle Änderungs-Operationen auf der Tabelle. Falls das Einfügen, das Ändern oder das Löschen in der Tabelle die kritischen Operationen in Ihrer Anwendung sind und Ihre Tabellen viele Index haben, könnten Sie versuchen einen Großteil der Indexe zu löschen.

Je nachdem, welche Operationen in Ihrer Anwendung überwiegen, sind die verschiedenen Tabellenformate von TurboDB unterschiedlich optimiert. Die alten Tabellenformate bis 3.0 sind sehr schnell beim Anfügen und auch beim Ändern von Datensätzen aber eher langsam beim Löschen. Die neuen Tabellenformate ab 4.0 haben ein eher ausgeglichenes Zeitverhalten und sind damit beim Einfügen und Ändern eher etwas langsamer, beim Löschen aber dafür deutlich schneller. Beim Auffinden von Datensätzen sind die alten Datenformate besonders schnell, wenn eine Satznummer angegeben wird. Die neuen Formate verwenden die Record-Id als Satznummer und können daher zusätzlich auch angekoppelte Datensätze schneller finden.

Beim Arbeiten mit SQL-Abfragen gibt es eine ganze Reihe von Tipps, wie die Performanz gesteigert werden kann:

Wenn die where-Klausel mehrere Bedingungen enthält, beginnen Sie mit derjenigen, die auf die wenigsten Datensätze zutrifft. Alternativ schreiben Sie diejenige Bedingung zuerst, für die es einen Index gibt.
Vermeiden Sie überflüssige Klammern.
Ziehen Sie den join einer Verknüpfung in der where-Klausel vor. TurboDB versucht zwar where-Bedingungen soweit wie möglich in Joins zu konvertieren, bei komplizierten Abfragen kann das aber evtl. nicht gelingen.
Verwenden Sie keine Unterabfragen, wenn auch eine komplexere einstufige Abfrage das Ergebnis liefern kann.

Wenn Sie umfangreiche Operationen auf einer Datenbank-Tabelle durchführen, sollten Sie überlegen, eine explizite Sperre auf diese Tabelle zu setzen. Durch diese Sperre, können andere Applikationen in dieser Zeit zwar nicht auf die Tabelle zugreifen (deshalb sollte die Operation nicht länger als ein paar Sekunden dauern), die Operation selbst wird aber erheblich rascher durchgeführt, weil überflüssige Schreib- und Sperraktionen unterbleiben.

Verwenden Sie TurboPL Prozeduren für komplexe Datenbank-Operationen. TurboPL Prozeduren sind von sich aus schon schneller als der Code in der Programmiersprache der Anwendung. Zusätzlich enthält TurboPL noch Befehle zum Optimieren der Operation, die es in der Programmiersprache der Anwendung gar nicht gibt. Dazu gehören insbesondere die schnellen Tabelle-Scans mit LoopRecs und sub sowie das Arbeiten mit Markierungen.

Bei der Arbeit mit TurboPL sollten die Programme natürlich wo nötig auf Geschwindigkeit optimiert sein, auch wenn es nicht um Datenbank-Operationen geht. Hinweise dazu finden Sie im nächsten Abschnitt.