Re: [OT] Welches relationale Datenbankmanagementsystem?
Hallo,
Am 15.02.2014 17:23, schrieb Gerhard Wolfstieg:
Hallo zusammen,
mit welchem RDBMS lassen sich möglichst schnell Datensätze auslesen bei
einer Datenbank mit (in der Größenordnung von) 200000 Datensätzen?
Voraussichtlich wird jede Abfrage sich durch etwa vier Tabellen hangeln
müssen, die dann wohl alle indiziert sind. Schreibgeschwindigkeit
spielt überhaupt keine Rolle.
Wie ändert sich bei diesem System dann die Lesegeschwindigkeit bei
einer Anzahl von Datensätzen im acht oder neunstelligen Bereich?
Wenn 200.000 Datensätze verarbeitet werden müssen, ist es egal ob dies
von MySQL, PostgreSQL oder Oracle übernommen wird. Die
Lesegeschwindigkeit sollte sich bei dieser Datenmenge kaum
unterscheiden. Im Millionenbereich wird die Frage langsam interessant
und im Milliardenbereich sollte man sich Gedanken machen, welche
Hardware man benutzt und wie man das Ganze konfiguriert.
Es hört sich an, als ob es ein Datawarehouse (DWH) System werden soll.
(Aber genaues geht aus der Email nicht hervor.) Dann sollte man auch die
Prinzipien der DWH Technolige beachten und die Tabellen entsprechend
anlegen.
Viel wichtiger werden andere Parameter:
Wieviele Prozessoren sind vorhanden. So könnten Querys parallel
verarbeitet werden.
Um so grösser der RAM, um so mehr besser. Muss ein Prozess bestimmte
Daten auf die Festplatte (SWAP) auslagern, hast Du verloren.
Bei grossen Datenmengen ist die Schnelligkeit des Plattenzugriffs sehr
wichtig. Was nützen die vielen Prozessoren und der grosse
Arbeitsspeicher, wenn die Platten zu langsam liefern. Der Aufruf von top
zeigt für die Prozessoren die idle Zeiten an.
Ein paar Parameter für die Tabellenstruktur
Tabellen und Indizes kann man partitionieren. Dies kann die
Schnelligkeit erhöhen.
Tabellen und Indizes sollten grundsätzlich auf unterschiedlichen
Plattensystemen (tablespaces) liegen.
Einige DBMS können Daten komprimiert ablegen (compress).
Bei Oracle gibt es noch die Einstellung pctfree = 0
bei der der Freiräume zwischen den Datensätzen minimiert wird.
bei PostgreSQL vermisse ich einen solchen Parameter.
Sofern möglich, kann man bei bestimmten Spalten bitmap Indizes anlegen
und auf B-Tree Indizes verzichten. Diese sind wesentlich schneller.
Nach dem Anlegen der Tabellen und Indizes sollte ein
analyze table und auch ein
analyze index erfolgen, damit das System Informationen über den Inhalt
der Objekte erhält.
... und google liefert sicherlich noch mehr gute Tips, wenn man ihn mit
Begriffen wie bspw. DWH füttert.
Gruss
FranzTimmer
Reply to: