2009-08-20 8 views
1

Ich entwickle eine Web-App, die auf große Datenmengen in einer MySQL-Datenbank zugreifen und damit arbeiten kann, so etwas wie ein Wörterbuch/Thesaurus. Ich muss die Leistung der DB testen, wenn ihre Größe zunimmt, also weiß ich, wie langsam jede Anfrage in der Zukunft sein wird.Wie wird die Datenbankleistung gemessen?

Irgendwelche Ideen? Wie gibt es spezielle Tools, um DB-Leistung für eine bestimmte Abfrage usw. zu überprüfen?

Antwort

3

Sie können Maatkit 's query profiler verwenden, um die Auswirkung der Datenmenge auf die MySQL-Leistung zu messen.

Und generatedata.com, um die Daten zu generieren, die Sie benötigen, um Ihre App zu testen.

+0

Würde JMeter Arbeit mit einem lokal gehosteten Web-App? –

+1

Ich sehe nichts, was Leute davon abhalten könnte, JMeter auf localhost zu benutzen. – Philippe

+0

Scheint wie die endgültige Antwort, bis wir von besseren Methoden hören. –

1

ein gutes Werkzeug: HTTP-Test-Tools mit wie

können Sie auch Ihre Anwendung Ansprechbarkeit testen zu verwenden ist Apache's ab, die standardmäßig mit Apache httpd Server kommt. Dieses Tool kann mehrere Verbindungen zu einem Webserver herstellen und seine Leistung messen. Während Firebug eine gute Möglichkeit ist, zu sehen, in welcher Reihenfolge die Dinge lodieren, wie lange jedes Element zum Laden braucht, usw., sehen Sie nur die Erfahrung eines Benutzers. gegen einen entladenen Testserver kann diese Information Sie nur so weit bringen. Sie simulieren die Verbindung mehrerer Benutzer und geben ein realistischeres Bild davon, wie eine bestimmte Seite gleichzeitig mit Benutzern umgeht.

was zu einer Einschränkung in ab führt: es testet nur eine URL. Ich komme oft umher, indem ich eine einfache Testwebseite aufrubbele, die aus einer Liste von vordefinierten URLs, die ich testen möchte, eine zufällige Auswahl trifft. Zum Beispiel: die Login-Seite, ein Suchergebnis, einen Kommentar, und so weiter. ab trifft die Testseite, und die Testseite ruft einfach eine der Test-URLs auf (möglicherweise mit einem randomisierten Parameter) und gibt diese Seite zurück. Auf diese Weise erhalten Sie eine bessere Vorstellung davon, wie Ihre gesamte Website mit gleichzeitigen Benutzern umgeht.

PS: Ihr Betriebssystem ist nicht zu beantworten. Sie müssen das selbst herausfinden, je nachdem, wie Ihre Anwendung geschrieben wurde, das Layout Ihrer Daten, die Konfiguration des Webservers und des Datenbankservers usw.

4

Wissen Sie, was Sie speziell testen ? Die Messung der "Leistung" ist immer unbrauchbar, es sei denn, Sie wissen genau, was Sie wollen.

Suchen Sie zum Beispiel nach einer niedrigen Latenz beim Abrufen von Abfrageergebnissen? Vielleicht ein hoher Durchsatz beim Abruf von Daten? Vielleicht interessieren Sie sich eher für schnelle Einfügungen in die Datenbank und weniger für schnelle Abfrageergebnisse? Vielleicht interessieren Sie sich für verschiedene Dinge an verschiedenen Tischen (in der Tat, das ist fast immer der Fall).

Mein Rat wird wahrscheinlich ignoriert werden, aber ich werde es trotzdem sagen:

nicht optimize tun, bevor Sie wissen, was Sie wollen.

Nicht optimieren, während Sie den Code schreiben.

Wenn Sie Ihre Datenbank optimieren, stellen Sie sicher, dass Sie für die richtigen Dinge optimieren.Verwenden Sie realistische Daten - wenn Sie Textabschnitte im Wörterbuchformat testen, testen Sie nicht mit binären Daten (zum Beispiel).

Wie auch immer, ich werden Sie wahrscheinlich wurden für eine technische Antwort suchen, aber hey ...

+0

Hilf schon ... und wie ich schon sagte, "also weiß ich wie langsam jede Anfrage in Zukunft sein wird" –

+0

aber nochmal - was bedeutet "langsam" in diesem Zusammenhang? Messen Sie Latenz oder Durchsatz? Wie auch immer, viel Glück beim Testen! – Thomi

+0

Latenz in Bezug darauf, wie lange es dauert, alle Abfragen auszuführen, die zum Generieren einer dynamischen Webseite erforderlich sind? Ich spreche im Grunde von einer starken Besucherlast auf einem DB-Server ... und davon, wie viel Zeit jede Webseite insgesamt * benötigt * –

Verwandte Themen