Raketenmodellbau.org Portal > Forum > Rund um den Raketenmodellbau > Lagerfeuer > Leistungsfähigkeit von Datenbanken?
Du kannst keine neue Antwort schreiben
Seiten (2): [1] 2 »

Autor Thema 
Oliver Arend

Administrator


Administrator

Oliver Arend

Registriert seit: Aug 2000

Wohnort: Great Falls, VA, USA

Verein: RMV/Solaris/AGM/TRA L1/TCV/MDRA/NOVAAR

Beiträge: 8317

Status: Offline

Beitrag 7307927 , Leistungsfähigkeit von Datenbanken? [Alter Beitrag02. Februar 2011 um 10:04]

[Melden] Profil von Oliver Arend anzeigen    Oliver Arend eine private Nachricht schicken   Oliver Arend besitzt keine Homepage    Mehr Beiträge von Oliver Arend finden

Weiss jemand wo/wie ich rausbekommen kann, wie leistungsfähig bestimmte Datenbanksysteme sind? Die Antwort wird "hängt davon ab" sein, aber ganz grob:

Ich habe in einer Tabelle x Felder und y Einträge (z.B. Verkaufsvorgänge von Raketenteilen mit Angaben wie Datum, Artikel, Artikelgruppe, Kunde, VK- und EK-Preis).
Ich mache eine SELECT-Abfrage mit z Kriterien und will darüber hinaus bei bestimmten Feldern summieren (also bspw. nur Kunden in Deutschland, und alle Zentrierringe die 2010 an Privatkunden verkauft wurden bitte zusammenzählen zu einem Eintrag in der Ausgabetabelle, Zentrierringe 2010 an Geschäftskunden in einen anderen Eintrag).

Die Datenbank läuft auf einem aktuellen PC, und der Datenbestand passt vollständig in den Arbeitsspeicher (also maximal einige GB).

Wie lange dauert dann so ein Abfrage?

Oliver
Dany

Der mit dem Dremel tanzt

Dany

Registriert seit: Aug 2000

Wohnort: Fislisbach, CH

Verein: ARGOS, TRA, HGV

Beiträge: 1213

Status: Offline

Beitrag 7307928 [Alter Beitrag02. Februar 2011 um 11:20]

[Melden] Profil von Dany anzeigen    Dany eine private Nachricht schicken   Besuche Dany's Homepage    Mehr Beiträge von Dany finden

Das wird ganz schwierig sein, das auch nur annähernd zu beantworten, da jedes Datenbank-System verschiedene Optimierungen hat und anwendet. Die Fragen sind dann immer, z.B. bei Oracle:

Welche Indexe sind definiert, welche Art (Hash, Bitmap, usw) ?
Welcher Explain-Plan wurde gefunden ?
Welche Forein-Keys, welche Primary-Keys sind definiert ?
Wie ist das DB-Filesystem angebunden, welcher Durchsatz kommt vom Disksystem ? Irgenwann muss Du das alles auch mal ins Memory laden.
Wie sind die Tabellen organisiert, welches Modell (normalisierter DataStore oder denormalisierter, dafür abfrageoptimierter DataMart) ?

Die Anzahl Felder x hat da nur ein untergeordnete Rolle, der Zugriff über den Join (das Zusammensuchen aller benötigten Informationen) ist das Wesentliche !
Für z brauchst Du die Indexe, die Summen werden erst danach gebildet.

Fly High & Recover Safe
Dany Flury (ARGOS WebMaster & Ariane 4 Team, Schweiz) / EURocketry Forum
MarkusJ

Gardena Master of Rocketry


Moderator

Registriert seit: Apr 2005

Wohnort: Kandel

Verein:

Beiträge: 2148

Status: Offline

Beitrag 7307929 [Alter Beitrag02. Februar 2011 um 11:29]

[Melden] Profil von MarkusJ anzeigen    MarkusJ eine private Nachricht schicken   MarkusJ besitzt keine Homepage    Mehr Beiträge von MarkusJ finden

"hängt davon ab" ...

... welche Indizes du verwendest
... welche DB du verwendest
... welche Abfragen du machst

Generell kann ein Index die meisten Anfragen signifikant beschleunigen, benötigt aber einiges an zusätzlichem Speicherplatz. Umgekehrt sind Aggregatfunktionen "teuer", da sie (meist) sequentiell auf dem End-/Zwischenergebnissen ausgeführt werden, wo dann in der Regel kein Index zur Verfügung steht.

Solange du nicht "die Welt" anforderst, solltest du deine Ergebnisse eigentlich innerhalb weniger Sekunden erhalten. Du wirst aber wohl nicht umhinkommen, einige Testläufe durchzuführen.

mfG
Markus

WARNUNG: Dieser Beitrag kann Spuren von Ironie beinhalten
Ich bin weder eine Suchmaschine, noch ein Nachschlagewerk - PNs zu Themen die im Forum stehen oder dorthin gehören, werde ich nicht beantworten.
Bilder bitte NICHT über Imageshack oder andere Imagehoster einbinden!
AlexanderM

Epoxy-Meister

Registriert seit: Feb 2004

Wohnort: Düsseldorf

Verein: FAR

Beiträge: 238

Status: Offline

Beitrag 7307935 [Alter Beitrag02. Februar 2011 um 14:20]

[Melden] Profil von AlexanderM anzeigen    AlexanderM eine private Nachricht schicken   Besuche AlexanderM's Homepage    Mehr Beiträge von AlexanderM finden

Wenn Du die DB selber betreiben willst, solltest Du auch in Betracht ziehen, wie aufwendig Einrichtung und Administration sind. So kann ein einfaches System (Access, MySQL, etc.), das für große Datenmengen und viele (gleichzeitige) Nutzer nicht ausreichen würde, für eine private DB oder die einer kleinen Firma ausreichen, auch wenn eine Abfrage dann ein paar Millisekundne länger dauert, was man dann aber in der Praxis nicht merkt.
Auch die Anschaffungskosten sind bei Oracle & Co deutlich höher.
Bei Datenbeständen von < 1 GB reicht ein einfaches DBMS sicher aus.
Oliver Arend

Administrator


Administrator

Oliver Arend

Registriert seit: Aug 2000

Wohnort: Great Falls, VA, USA

Verein: RMV/Solaris/AGM/TRA L1/TCV/MDRA/NOVAAR

Beiträge: 8317

Status: Offline

Beitrag 7307938 [Alter Beitrag02. Februar 2011 um 16:13]

[Melden] Profil von Oliver Arend anzeigen    Oliver Arend eine private Nachricht schicken   Oliver Arend besitzt keine Homepage    Mehr Beiträge von Oliver Arend finden

Nein, es geht um was berufliches, wo ich keine Details zu preisgeben darf/soll/will. Ich will nichts einrichten, und hab leider auch keine Ahnung von den Details nach denen Dany gefragt hat. Ich wollte die Grössenordnung für die Dauer bestimmter Abfragen bestimmen, in Abhängigkeit von der Datenmenge, und herausfinden ob meine Einschätzung, dass das aktuelle System grottenschlecht ist, richtig ist oder nicht.

Was die Datenmengen angeht: Ich schätze den Bestand auf eine siebenstellige Zahl an Einträgen, und es geht wirklich um Verkaufsvorgänge, und die Abfragen, die mich interessieren, summieren vor allem die Verkaufszahlen einzelner Produkte über ein Jahr, je nach Land und Vertriebskanal, so dass die Ausgabetabelle rund 10 000 Zeilen hat. Da die ursprüngliche Datenmenge in den Arbeitsspeicher eines Rechners passen sollte, und die Firma gross genug ist um eine entsprechende Infrastruktur vorhalten zu können, halte ich es einfach für etwas schwach, dass solche Abfragen mehrere Stunden dauern sollen. Es ist m.E. unwahrscheinlich, dass mehrere solcher Abfragen parallel laufen.

Oliver
Neil

99.9% harmless nerd


Administrator

Neil

Registriert seit: Aug 2000

Wohnort: Delft

Verein: SOLARIS

Beiträge: 7776

Status: Offline

Beitrag 7307939 [Alter Beitrag02. Februar 2011 um 16:55]

[Melden] Profil von Neil anzeigen    Neil eine private Nachricht schicken   Neil besitzt keine Homepage    Mehr Beiträge von Neil finden

Hi,

das hängt doch damit zu sammen, wie man die Abfrage programmiert, ob man immer im gesamten Datenbestand schaut, oder ob man erstmal fieltert und dann weiter schaut.
Wenn ich z.B. bei jedem Kunden in der Artikeliste einen Artikel suche, und gleichzeitig noch das Land des Kunden raus suche um zu sehen wie viele Artikel in dieses Land gegangen sind, so ergibt das insgesamt

Abfragen = Kunden * Artikel * Land

Wenn ich hingegen erstmal nach Ländern Filter, so verkleinert sich die Anzahl der Kunden, und somit auch der gesamte Abfrage Aufwand.
Jetzt wäre noc zu klären was mehr Sinn ergeben würde, zuerst nach Ländern oder nach Artikeln filtern? Da es wohl weniger Länger als Artikel gibt die ein Kunde gekauft hat, würde ich erst nach den Ländern filtern. Die Zahl ist auf alle Fälle begrenzt, die Artikel Anzahl nicht.

Es kommt also im Prinzip darauf an, wie gut die Abfragen programmiert wurden. Ich denke das ist auch das, was du wissen willst.

Gruß

Neil

Die Erde ist eine Scheibe. Egal in welche Richtung sich die Menschheit bewegt, sie geht immer auf einen Abgrund zu.


Dirk

Überflieger

Dirk

Registriert seit: Feb 2002

Wohnort: Woltersdorf (Berlin)

Verein: AG Modellraketen, L1, T2, §7, §20,§27

Beiträge: 1885

Status: Offline

Beitrag 7307941 [Alter Beitrag02. Februar 2011 um 17:46]

[Melden] Profil von Dirk anzeigen    Dirk eine private Nachricht schicken   Besuche Dirk's Homepage    Mehr Beiträge von Dirk finden

Interessant wäre die Frage nach der eigentlichen Datenbank.
Also z.B. MS SQL, Oracle, MySql, Gupta, TXT Files, Excel uvm.

Das wäre schon ein erster Indikator. Kann ja auch sein das da irgendwas wildes hinter hängt.

Das mit den indizes geht dann schon etwas in richtung Tuning. "Mein" Datenbanker isst die Dinger sogar zum Frühstück fg

Aber so eine Abfrage bei einer kleinen DB kann keine Sekunden dauern.



Gruß Dirk


hybrid

SP-Schnüffler

hybrid

Registriert seit: Mai 2005

Wohnort:

Verein:

Beiträge: 675

Status: Offline

Beitrag 7308902 [Alter Beitrag02. Februar 2011 um 23:41]

[Melden] Profil von hybrid anzeigen    hybrid eine private Nachricht schicken   Besuche hybrid's Homepage    Mehr Beiträge von hybrid finden

Zitat:
Original geschrieben von Oliver Arend
und die Firma gross genug ist um eine entsprechende Infrastruktur vorhalten zu können, halte ich es einfach für etwas schwach, dass solche Abfragen mehrere Stunden dauern sollen. Es ist m.E. unwahrscheinlich, dass mehrere solcher Abfragen parallel laufen.
Oliver



Das ist ganz schwach, selbst wenn die Daten NICHT in den Hauptspeicher passen.

Ich betreibe eine Datenbank mit ca 750 Mio Einträgen, (Gesamtgröße der DB ~80GB)
die nach diversen Parametern sortiert und gruppiert werden können.

Der Rechner auf dem das passiert ist ein normaler Desktop-Rechner mit
8GB Hauptspeicher und einem Quadcore-Prozessor.

Die Abfragen dauern nicht länger als einige Sekunden.

Grüße
Malte
Johannes (Axe) Haux

Poseidon

Johannes (Axe) Haux

Registriert seit: Okt 2000

Wohnort: D-73035 Göppingen-Jebenhausen

Verein: HGV, AGM, TRA #7891 L2 z.Zt. inaktiv

Beiträge: 1067

Status: Offline

Beitrag 7534900 [Alter Beitrag22. Juni 2011 um 19:08]

[Melden] Profil von Johannes (Axe) Haux anzeigen    Johannes (Axe) Haux eine private Nachricht schicken   Johannes (Axe) Haux besitzt keine Homepage    Mehr Beiträge von Johannes (Axe) Haux finden

Zitat:
Original geschrieben von Oliver Arend

Weiss jemand wo/wie ich rausbekommen kann, wie leistungsfähig bestimmte Datenbanksysteme sind?

Wie lange dauert dann so ein Abfrage?

Oliver




Spät, aber vielleicht hilfts.

Das größte Problem bei Datenbanken sind die Indices. Dann gibt es noch Views ...

z.B. SAP hat den Artikelstamm (eigentliche jede Tabelle) in zig Tables gesplittet und dann eine große View drüber gelegt.
Das bedeutet dann: Ein Verdeutlichungsbeispiel:

Ich suche Nach einer Artikelnummer: 0.0
Ich suche nach einem bestimmten Artikelnamen: 0.001
Ich suche nach einem Lagerort: 0.01
Ich suche nach allem drei und dazu noch Farbe und Gewicht: zig Minuten.

Jetzt sollte man meinen wenn ich jetzt genauere Angaben mache wird der Suchkreis kleiner und es geht schneller, das Gegenteil ist jedoch der Fall:

Durch die View die über die Tabellen gelegt ist erscheint der Stamm als eine Tabelle die er nicht ist.
Wenn ich nun 5 Felder die alle in verschiedenen Tabellen liegen selektiere so macht die View ein riesengroßes Kreuzprodukt draus in dem es alle möglichen Verbindungen knüpft und geht dann im 2. Schritt her und wirft alle Kreuzprodukte die nicht den Kriterien entsprechen weg - und das dauert.

Wenn es dieses Problem ist (aber dazu müsstest Du den Aufbau der DB kennen) müsstest Du zuerst z.B. die Artikelnummern aller Artikelnamen/Farben/Gewichte suchen die Du brauchst und dann mit den Artikelnummer in die Lagerorte gehen. z.B. in dem Du einen Temp-Table aufbaust.

Das beschriebene gilt für relationale Datenbanken wie Oracle oder Informix

Gruß Johannes


Die Zensur ist das lebendige Geständnis der Großen, daß sie nur verdummte Sklaven aber keine freien Völker regieren können. (Johann Nepomuk Nestroy)
Das Merkwürdige an der Zukunft ist wohl die Vorstellung, daß man unsere Zeit einmal die gute alte Zeit nennen wird. (Ernest Hemingway)
Es wird niemals so viel gelogen wie vor der Wahl, während des Krieges und nach der Jagd. (Otto Fürst von Bismarck)
Zreak

Drechsel-Lehrling

Zreak

Registriert seit: Jul 2010

Wohnort: Kahl

Verein:

Beiträge: 68

Status: Offline

Beitrag 7541900 [Alter Beitrag23. Juni 2011 um 03:42]

[Melden] Profil von Zreak anzeigen    Zreak eine private Nachricht schicken   Zreak besitzt keine Homepage    Mehr Beiträge von Zreak finden

Hey Leute,

kleiner Tipp: Caching ?!
Gibt es wirklich einen sinnvollen Grund so eine Abfrage mehr als einmal durchzuführen?
Danach muss doch nur bei jedem Verkauf die Verkaufszahl des Artikels in der richtigen Spalte um 1
erhöht werden?
Das sollte kaum Aufwand darstellen. (Eine zusätzliche Update Query pro Bestellung => 0,03 s)

Sowas ist meiner Meinung nach kein Problem der Datenbank, sondern ein Aufbaufehler.
Warum sollte man jeden Eintrag jedesmal wieder auswerten, wenn man ihn bereits einmal ausgewertet hat?

Gruß,
Christoph

P.S. so ne Anfrage kann schon mal dauern, aber bei einigen Stunden, würde ich auch schwitzen.
Seiten (2): [1] 2 »
[Zurück zum Anfang]
Du kannst keine neue Antwort schreiben