# Welche Kriterien haben Einfluss auf die Geschwindigkeit einer Datenbank ?



## javafor (11. Nov 2019)

Hallo,

ich habe ein System welches Daten aus einer Datenbank liest und schreibt. Nun möchte ich wissen ob hinsichtlich der Geschwindigkeit eine andere Datenbank evtl besser geeignet wäre. Hierfür habe ich mir schon mögliche Alternative rausgepickt. Nun stellt sich mir die Frage wie ich am besten meine Testumgebung gestalte, sodass ich am Ende eine zu einem Aussagekräftigem Ergebnis komme. Ich glaube mit nur ein paar Daten lesen und schreiben und die Geschwindigkeiten vergleichen ist es nicht getan. Daher meine Frage:

Welche Kriterien spielen bei der Geschwindigkeit eine Rolle ?

Ist es möglich dass Datenbank A beim einlesen von 10 Datensätzen schneller gegenüber Datenbank B ist, jedoch Datenbank B bei 100.000 Datensätzen vorne liegt ? Oder verhält sich das in der Regel proportional ? Gleiche Frage auch bei den unterschiedlichen Datentypen die gelesen und geschrieben werden: Ist es möglich, dass Datenbank A bestimmte Datentypen schneller lesen kann als Datenbank B, aber Datenbank B andere Datentypen dafür schneller lesen kann ?

Nach welchen Kriterien würdet ihr vorgehen bzw. wie würdet Ihr die Testfälle gestalten ?


----------



## M.L. (11. Nov 2019)

Auch hallo,

die verwendeten Datentypen können tatsächlich einen Einfluss auf die Geschwindigkeit nehmen: https://stackoverflow.com/questions...sing-the-correct-data-type-affect-performance (spez. Chunk-Grösse versch. DB)
Weiterhin sollten die DB-Systeme unter identischen Bedingungen getestet werden (eine In-Memory DB hat z.B. keine Festplattenzugriffe, die Zeit kosten können)


----------



## mihe7 (11. Nov 2019)

javafor hat gesagt.:


> Welche Kriterien spielen bei der Geschwindigkeit eine Rolle ?


Das sind gefühlt Tausende. Was heißt Lesen und Schreiben? Wie groß ist denn die DB? Geht es um ein relationale DBMS mit SQL? Was ist der Einsatzzweck (ein Access ist nun mal kein SQL Server). Verwendest Du die DB im OLAP- oder im OLTP-Betrieb? Viele Benutzer greifen parallel darauf zu? Wie schnell werden welche Daten benötigt. Bei relationalen Daten spielt z. T. eine Rolle, wie viele Spalten Du benötigst (auch, welche Datentypen) und teilweise geht es sogar darum, in welchem Verhältnis die gespeicherten Werte zueinander stehen. Wie komplex sind die Anfragen? Welche Art von Anfragen? Usw. usw. Kurz: so einfach lässt sich das nicht beantworten.

Und ja: die DBMSs sind natürlich unterschiedlich, auch in den Versionen. So hatte MySQL 5.5 z. B. einen Query Cache, der in 8.0 entfernt wurde. Während der Query Cache in einigen Fällen super Ergebnisse bringt, skaliert er schlecht, so dass er in vielen anderen Fällen zum Flaschenhals wird.


----------



## LimDul (12. Nov 2019)

Hinzu kommt die Frage, was für eine Hardware steht da drunter, was passiert mit den Daten. Bei Enterprise Anwendungen ist z.B. oft eine Oracle Datenbank drunter. Die ist von den Systemanforderungen her gegenüber MySql z.B. ein Monster, dafür skaliert die gut mit entsprechendem RAM und CPU-Leistung und bringt Features mit die für den Enterprise betrieb notwendig sind.

Nach meinen Erfahrungen ist es eher unwahrscheinlich, dass das gewählte Datenbanksystem der Flaschenhals ist und es sinnvoll ist, dass zu tauschen. Das ist eher nur bei einem kompletten Fehlgriff der Fall. Wenn nicht die Anwendung selber der Flaschenhals ist, dann sind es normalerweise einzelne Abfragen (Fehlende Indexe - oder auch überflüssige Indexe) oder unnötig Abfragen aufgrund eines schlechten Schemadesigns.

Und insbesondere bietet jede Datenbank diverseste Schrauben an denen man drehen kann.

Von daher ist meine Meinung: So einen Vergleich kann man machen, aber das Ergebnis ist nichts wert. Denn es kommt da raus das unter diesen sehr spezifischen Bedingungen Datenbank A schneller/besser ist als Datenbank B. Sobald man aber nur an ein paar Schrauben dreht, kann sich das Ergebnis umkehren.

Wenn überhaupt, müsste man unter realen Bedingungen testen. Sprich ich habe eine Anwendung und für die möchte entscheiden ob Datenbank A oder B besser geeignet ist (und da sollte Geschwindigkeit nur ein Faktor sein (Siehe als amüsanten Text dazu: http://www.mongodb-is-web-scale.com/ ). Dann kann man das für diesen Anwendungsfall testen.


----------



## mihe7 (12. Nov 2019)

@LimDul Der Link ist ja heiß: "_Relational databases have impotence mismatch." _ROFL


----------

