Lost in Space Druckversion
Recordsets
auf Abwegen
Seite
[<] [1] [2] [3] (4) 
Sa, 06.04.2002
Autor: Olaf Lüder

Performancevergleich

Als Testgerät kam bei allen nachfolgenden Messungen ein Pentium II mit 300 Mhz und 256 MB Hauptspeicher unter W2k Server SP2 zum Einsatz. Der erste Aufruf der beiden Skripte ergab folgende Laufzeiten (Repeats entspricht der Anzahl der Schleifendurchläufe, also der DB-Abfragen- pro Scriptaufruf) :

Repeats 1    5   
TestAcces.asp 80 ms 470 ms
TestDisconnected.asp 10 ms 30 ms

Wir sehen, dass unser Skript unter Verwendung der Disconnected Recordsets ganz grob geschätzt ca. um den Faktor 10 schneller läuft - wenn das kein Performancegewinn ist!

Um das ganze etwas genauer untersuchen zu können, haben wir uns entschlossen, die beiden Skripte zusätzlich noch mit dem WAS (Web Application Stress Tool) von MS zu testen. Dieses Tool erlaubt es uns, in einer festgelegten Zeitspanne automatisch möglichst viele Anforderungen an den Web-Server zu senden. Durch den Einsatz von Threads und mehreren Sockets pro Thread kann der gleichzeitige Zugriff mehrerer Clients simuliert werden.

Alle Tests haben wir über eine Dauer von 60 Sekunden durchgeführt, begonnen haben wir mit einem Schleifendurchlauf (Repeats) pro Skriptaufruf und 25 Threads mit jeweils 1 Socket, also 25 (simulierten) Clients, die Ergebnisse lauten wie folgt:

Aufrufe Requests/sec
TestAcces.asp 768 12,78
TestDisconnected.asp 5880 97,86

Unter Einsatz der disconnected Recordsets waren wir also auch bei diesem Test ca. um den Faktor 8 schneller.

Im zweiten Versuch haben wir die Datenbankintensität pro Skript erhöht, indem wir einfach 5 Schleifendurchläufe (statt wie vorher 1) pro Aufruf vorgenommen haben; die Ergebnisse haben mich im ersten Moment wirklich überrascht:

Aufrufe Requests/sec
TestAcces.asp 876 14,58
TestDisconnected.asp 2412 40,14

Beim traditionellen Zugriff sollte das Skript plötzlich deutlich schneller sein wie zuvor, obwohl es jetzt 5 mal soviele Datenbankabfragen ausführen muss? Das Erstaunen hat sich schnell gelegt, nachdem ich einen Blick auf die aufgetretenen Fehler geworfen habe - 865 der 876 Anfragen lieferten Status-Code 500 (Internal Server Error) zurück, das Logfile zeigte Fehler 80004005 an, Access scheint hier doch etwas überfordert gewesen zu sein. Beim Test mit den Disconnected Recordsets trat übrigens kein einziger Fehler auf.

Wir haben den Test noch einmal mit weniger Clients wiederholt, es wurden nun 10 Threads mit je 1 Socket, also insgesamt 10 Clients, eingesetzt:

Aufrufe Requests/sec
TestAcces.asp 172 2,86
TestDisconnected.asp 2447 40,73

Während wir auf klassische Art also noch nicht einmal 3 Anfragen pro Sekunde bearbeiten können, schaffen wir mit Hilfe der Disconnected Recordsets immerhin rund 40 Anfragen - ein bemerkenswerter Unterschied!

Auch wenn die Datenbank nur ein sehr spezielles Beispiel repräsentiert und unser Performance-Test sicher noch verbesserungswürdig ist, läßt sich insgesamt doch fesstellen, dass wir die Performance durch den Einsatz von Disconnected Recordsets um einen Faktor > 10 steigern konnten - es handelt sich hierbei also durchaus um eine effiziente und praxistaugliche Alternative, die man in Betracht ziehen sollte.


Fragen, Anregungen

Wenn Sie Fragen oder Anregungen zu diesem Beitrag haben, wenden Sie sich bitte direkt an den Autor, die E-Mail-Adresse finden Sie am Anfang des Artikels.

© 2001, 2002 NOGETEC GmbH - Alle Rechte vorbehalten. - Impressum
Der Inhalt dieser Seiten ist urheberrechtlich geschützt. Texte, Grafiken und Dateien dürfen ohne unsere schriftliche Genehmigung - auch auszugsweise - nicht kopiert, vervielfätigt oder vertrieben werden.
Übersicht
13 Beiträge
in 11 Kategorien

ASP classic (7)
ASP.NET (0)
Komponenten (2)
ISAPI-Filter (4)
Konfiguration (0)
No more Cookies
ASP Sessions
ohne Sitzungscookies

Sie nutzen das integrierte Session-Objekt?
Ihre Kunden akzeptieren aber keine Cookies?

Wir haben die Lösung...
Load me up
ASP Fileupload
ohne Komponenten

Sie möchten Dateien auf den Server heraufladen,
ohne Komponenten zu installieren?

Gar kein Problem...
Little Secrets
Dateinamen & Parameter
im URL verbergen

Verschiedene Pfade auf eine Datei abbilden...?
Skriptnamen weglassen, Parameter verstecken...?

So funktioniert's ...
Lost in Space
Recordsets
auf Abwegen

Sie nutzen Datenbanken & ADO-Recordsets...?
Die Performance ist aber nicht befriedigend...?

Dann lesen Sie weiter...
Subdomains
Subdomains einrichten
ohne viel Aufwand

Sie möchten Subdomains verwenden, mit eigenen Verzeichnissen aber ohne extra Host-Header oder Web-Sites einzurichten?

Wir zeigen Ihnen wie...