Testen der Leistung von Google BigTables (und anderen integrierten Datenbanken)

17

Was sind einige effektive Möglichkeiten, um programmgesteuerte Leistungstests für Datenbankvorgänge durchzuführen, insbesondere in Umgebungen, in denen die Datenbanken selbst keine speziellen Tools anbieten?

In Google App Engine werden beispielsweise ganze Seitenladevorgänge als ein Vorgang ausgewertet, der bestimmte Datenbankvorgänge umfassen kann. Dieses Problem tritt wahrscheinlich auch in SQLite und anderen integrierten DBs auf. Gibt es empfohlene Datenbanktools für eine gründlichere Diagnose dieser Art von Abfragen, da es schwierig ist, die (äquivalenten) zu testenden Auswahlen und Einfügungen vollständig zu abstrahieren?

Brian Ballsun-Stanton
quelle
Haben Sie direkten Zugriff auf die betreffende Datenbank?
Stingervz
Ja, ich schreibe die App. Und während die App-Leistung eine andere Frage ist, erhalte ich in einer bösen Abfrage, die ich geschrieben habe, einige ziemlich schwerwiegende Leistungseinbußen.
Brian Ballsun-Stanton
Manchmal sind ein Dutzend Augenpaare eine bessere Diagnose als ein Abfrageanalysator ... (ok, nicht so oft)
jcolebrand
@Brian Ich denke, Sie würden mit dieser Art von Frage besser mit Stackoverflow umgehen, da es sich eher um eine Programmierfrage als um eine DBA-Frage handelt.
IamIC
@ IanC Drat. Ich versuche, eher die bigtable Unterlage als die Leistung als Ganzes zu erreichen. Aber ich werde streichen, wenn die Leute die Frage nicht für geeignet halten. (Ich versuche auch sicherzustellen, dass die Website nicht die ganze Zeit über Oracle / SQL-Server /
MySQL ist

Antworten:

1

Mir scheint, dass Ihr Problem darin besteht, dass Sie versuchen, Leistungsmetriken zu testen, die in der zugrunde liegenden Datenbank nicht gut unterstützt werden. Dies macht es sehr schwierig, die Leistung systemübergreifend zu vergleichen, da die zugrunde liegenden Ansätze sehr unterschiedlich sind. Ich denke nicht, dass es möglich ist, Äpfel mit Äpfeln zu vergleichen, so wie ich nicht glaube, dass Sie einen Apfel mit Äpfeln-Vergleich von Ansätzen vom Typ ORDBMS mit Ansätzen vom Typ RDBMS durchführen können. Die Performance-Bedenken sind einfach zu unterschiedlich und wenn Stonebraker der Meinung ist, dass die Optimierung eines ORDBMS für TPC-C-Tests den springenden Punkt verfehlt, ist dies für Systeme, die noch weiter voneinander entfernt sind, unmöglich. (Ich denke, er ist genau dort, wo die ORDBMS-Funktionalität ins Spiel kommt.)

Ich denke, Sie müssen ehrlich sein, indem Sie sich ansehen, wie Sie jedes System verwenden und ein Benchmark-Tool aufbauen, das auf dem Ansatz basiert, den Sie mit jedem System verfolgen würden. Dann kann man zumindest für diesen Workflow sagen, dass der Benchmark etwas Bestimmtes zeigt. Ich verstehe jedoch nicht, wie Sie verallgemeinern können. Sie können es auch in einem Profiler ausführen, um zusätzliche Informationen darüber zu erhalten, wo die Zeit im Testlauf auf verschiedenen Engines verbracht wird.

Es ist jedoch sehr schwierig, DB-Benchmarking unter den besten Umständen aussagekräftig zu machen, und wenn Sie unterschiedliche Systeme vergleichen, wird es unmöglich, eine Verallgemeinerung vorzunehmen.

Chris Travers
quelle
0

AppStats ist das wichtigste Tool zum Messen der Leistung in App Engine. Die für jeden RPC verwendete Zeit, einschließlich Datenspeicher-, Memcache-, URL-Abruf- und E-Mail-Anforderungen, wird in einem grafischen Diagramm angezeigt. Normalerweise werden die Anforderungen als "Treppe" angezeigt, bei der jede Anforderung an dem Punkt beginnt, an dem die vorherige Anforderung beendet wurde, und zwar in der nächsten Zeile nach unten.

Wenn Sie die erweiterten asynchronen Anforderungen in ndb verwenden, können Sie tatsächlich sehen, dass die Anforderungen parallel ausgeführt werden.

Dieses Tool war für mich eine immense Hilfe, um zu sehen, wo die Zeit verbracht wird und wie Abfragen optimiert werden können.

Brent Washburne
quelle