Ich sehe viele Diskussionen über die Leistung von db 'x' oder den Wechsel von 'x' zu 'y', die die Leistung unserer Site verbessern.
Ich habe noch kein richtiges Benchmarking gefunden, das für verschiedene Datenbanktypen geeignet ist.
Ist es möglich, einen aussagekräftigen Benchmark zu schreiben, der für mehrere DB-Typen wie relational, dokumentenorientiert usw. verwendet werden kann?
Wie würden Sie einen solchen Benchmark entwerfen?
database
benchmarking
Dan McGrath
quelle
quelle
Antworten:
Kurze Antwort
Ja , Sie können einen aussagekräftigen Benchmark für einen untersuchten Fall erstellen, wenn Sie dies sorgfältig tun, und Sie können verstehen, dass dies für andere Fälle möglicherweise nicht der Fall ist, wenn dies für den jeweiligen Fall relevant ist. Dies gilt auch für den Vergleich von Datenbanken desselben Typs (relationale Datenbank mit einer anderen relationalen Datenbank) oder von Datenbanken unterschiedlichen Typs.
Nein , Sie können keinen Benchmark schreiben, der auf magische Weise beweist, dass eine bestimmte Datenbank für jede Anwendung in jedem Fall besser ist als eine andere.
Lange Antwort
Man kann definitiv sagen, dass der Wechsel von einer Datenbank zu einer anderen die Leistung unserer Website verbessert hat.
Sie messen die Leistung der vorherigen Datenbank anhand von Profilen oder Laufzeitstatistiken, indem Sie genügend Informationen zu den Abfragen und deren Geschwindigkeit sammeln.
Sie verschieben die Anwendung in die neue Datenbank.
Sie machen die gleichen Maßnahmen.
Sie vergleichen.
Zum Beispiel, wenn die vollständige Liste von 3 182 432 Produkten in 2,834 s geladen wurde. auf eine alte Datenbank und lädt in 0,920 s. In einer neuen Datenbank ist es ein Gewinn, da die Anwendung in beiden Fällen einen leeren Cache hat: Die neue Datenbank hat die Leistung Ihrer Site in Bezug auf diese Abfrage verbessert.
Nun, wie jede Leistungsmetrik, ist sie voreingenommen:
Einverstanden ist die neue Abfrage schneller. Warten Sie, Ihr DBA wusste nicht, wie er die zuvor vorhandene Datenbank verwenden sollte , sodass die Abfrage, die alle Produkte lädt, nicht optimiert ist . Wenn Sie es so umschreiben, können Sie diese Produkte in 0,855 s laden. anstelle von 2,834.
Ok, du hast ein besseres Ergebnis. Aber finden Sie es nicht unfair, eine Datenbank mit frischen Daten zu vergleichen, die in eine 10 Jahre alte Datenbank geschrieben wurden, für die der letzte Wartungsplan vor drei Jahren ausgeführt wurde? Denken Sie nicht, Sie hätten das Datenbankprodukt in den letzten vier Jahren mindestens einmal aktualisieren sollen ?
Einige Abfragen sind schneller. Einige sind langsamer. Wie berechnen Sie das durchschnittliche Ergebnis, um zu wissen, dass Sie beim Umstieg auf die neue Datenbank insgesamt an Leistung gewonnen haben? Die Zeit, in der Sie alle 3 182 432 Produkte laden, ist schneller. Aber spielt es eine Rolle, wenn die Abfrage auf der Website nur in seltenen Fällen ausgeführt wird, wenn ein Administrator eine bestimmte Aufgabe ausführt, die er in den letzten zehn Jahren nur zweimal ausgeführt hat? Das Ausführen aller Abfragen auf der Homepage für einen neuen Benutzer kostet dagegen 0,281 s. mit der neuen Datenbank, als es 0,207 s war. mit der alten Datenbank. Dieses Ergebnis ist umso wichtiger, als diese Abfragen über einen längeren Zeitraum nicht zwischengespeichert werden können und zehntausende Male pro Tag ausgeführt werden.
Beide Datenbanken müssen auf denselben Servern , derselben Hardware und derselben Struktur getestet werden. Beispielsweise können Sie nicht eine Datenbank auf einer einzelnen Festplatte und die andere auf einem RAID1 mit zwei SSDs testen. Wenn Sie ein großes Projekt in eine neue Datenbank migrieren, besteht die Möglichkeit, dass Sie die neue Datenbank nur auf hundert anderen neu bereitgestellten Rack-Servern hosten, während die vorherige Datenbank auf den vorherigen Computern verbleibt.
Zusammenfassend können Sie die Datenbankabfragen einer Anwendung vergleichen und präzise Metriken abrufen . Aber dann muss man Zahlen eine Bedeutung geben. In diesem Zustand ist es verlockend zu behaupten, dass Sie die Website-Leistung gesteigert haben. Andernfalls wäre das Management verärgert zu erfahren, dass Sie Tausende von Dollar und Monate an Arbeit ausgegeben haben, nur um die Leistung zu verbessern.
Der schrecklichste Fehler besteht darin, diese Schlussfolgerungen aus den Benchmarks zu ziehen und daraus eine gewisse Dummheit zu schließen: "Microsoft SQL Server ist dreimal schneller als Oracle". Besser definieren. Besser in welchen Fällen? Für welche Art von Anwendungen? Für welches Entwicklerteam?
Je mehr Sie interpretieren und verallgemeinern, desto irrelevanter und bedeutungsloser wird die Sache.
ist für einen Entwickler von Bedeutung und genau genug, um zu wissen, was wie getestet wurde und was die Ergebnisse waren. Dies beantwortet Ihre Frage Nummer 2.
Leider ergibt das für das Management keinen Sinn. Stattdessen:
ist ein reiner Marketing-Jibber-Jabber und hat technisch nichts zu bedeuten, aber überraschenderweise einen Wert für die Management- und Marketingabteilung.
Können wir schließlich verschiedene Arten von Datenbanken vergleichen? Ich würde sagen, dass es absolut möglich ist. Angenommen, ich habe eine Website, auf der große Fotos gehostet werden. Diese Fotos sind
varbinary(max)
in Microsoft SQL Server 2005 gespeichert (daher kann ich sie nicht verwendenfilestream
). Ich bin besorgt über die Leistung beim Laden dieser Fotos, daher beschließe ich, die Fotos stattdessen als Dateien zu speichern und das Dateisystem als neue Datenbank zu verwenden. Erstens werden diese Dateien auf demselben Computer wie die Datenbank gespeichert. Ich profiliere die neue Lösung und erhalte das Ergebnis, das zeigt, dass in meinem Fall Dateien vom Dateisystem 4% schneller geladen werden als von Microsoft SQL Server. Der Maßstab ist sehr klar. Jetzt kann ich über die Bereitstellung eines dedizierten Servers nachdenken, der für die direkte Dateispeicherung optimiert ist, anstatt den für Microsoft SQL Server optimierten Server zu verwenden.quelle
Nein, die Unterschiede zwischen ihnen sind so groß, dass jeder Benchmark voreingenommen wäre.
Die Entwicklung einer Website wie Computer Language Benchmarks Game , die eine breite Palette von Tests umfasst und das Vergleichen von Tests (entweder spezifische Tests von Sprache zu Sprache oder Verbundwerkstoffe aus vielen Sprachen) erleichtert, wäre von Vorteil (bei zumindest in meinen Augen), insbesondere wenn es so eingerichtet ist, dass die Community Lösungen einreichen und etwaige Mängel in Schemata oder Abfragen beheben kann.
Im Fall der DB-Benchmark-Site könnten Tests anstelle der Implementierung von Algorithmen (wie im Fall des Sprach-Shootouts) aus Rohdaten bestehen, die gespeichert und dann gemäß bestimmten Einschränkungen abgerufen werden müssen. Beispielsweise gibt es möglicherweise eine Reihe von Rohdaten, die Informationen enthalten, die ein einfaches Schema darstellen, das darstellt, was eine Community-Bibliothek zum Verfolgen von Kunden und Büchern verwenden kann. Jede Datenbank muss alle 1 Million Datensätze speichern und dann einige Teilmengen der Daten abrufen, die die Einschränkungen erfüllen. Dann könnte es auch einen Datensatz geben, der eine sehr einfache Struktur / Beziehung darstellt (möglicherweise ein Kommentarsystem, das normalerweise für Sites wie ESPN usw. verwendet wird), der 100 Millionen Datensätze enthält und einen eigenen Satz von Abfragen enthält, die ausgeführt werden müssen . Etc.
Das Testen von DBs in einem breiten Spektrum von Datensätzen (von komplexen bis zu einfachen Beziehungen, von kleinen bis zu umfangreichen Datensätzen) kann sich als sehr hilfreich erweisen, da Sie zumindest allgemeine Tendenzen für Daten erkennen können, die ähnliche Eigenschaften wie das von Ihnen ausgewählte Projekt aufweisen derzeit bewerten.
quelle
Mit all dem Geld, das bei den großen Datenbankfirmen und der großen Gruppe von Entwicklern für Open-Source-DB-Apps auf dem Spiel steht, hätten sie es bereits herausgefunden (und die Ergebnisse über das Internet verbreitet). ).
Würde ich nicht. Erstellen Sie stattdessen spezifische Benchmarks für bestimmte Anforderungen und Umgebungen.
Irgendwann können der verfügbare Geldbetrag und die Erfahrung des Designers mit einer bestimmten Datenbank die Einschränkungen mehr als alles andere bestimmen. Ein guter Oracle-Datenbankadministrator kann die meisten Nachwuchsentwickler unabhängig von der gewählten Plattform überzeugen.
quelle
Ich möchte noch einige Gründe hinzufügen, warum Sie nicht alle Arten von Datenbanken vergleichen können.
Es gibt zwei Hauptrichtungen von Datenbanksystemen: OLAP und OLTP (siehe Vergleich ).
Wie Sie sagten, gibt es auch relationale und dokumentenorientierte Datenbanksysteme. Während RDBS strikt dem ACID-Prinzip folgt , können Sie in den meisten dokumentenorientierten DBS entscheiden, dass schwache Daten für Ihre Anwendung ausreichen. Dies erleichtert das Sperren und Planen erheblich.
Kurz gesagt: Sie würden nicht argumentieren, dass ein Lamborghini das beste Auto der Welt ist . Denken Sie an das Kofferraumvolumen, die Anzahl der Sitze oder die Laufleistung.
Als Randnotiz: Hier ist ein Benchmark für OLTP-Datenbanksysteme.
quelle