[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: