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?
performance
database-design
google-app-engine
performance-testing
Brian Ballsun-Stanton
quelle
quelle
Antworten:
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.
quelle
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.
quelle