AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Was macht Datenbanken so schnell?
Thema durchsuchen
Ansicht
Themen-Optionen

Was macht Datenbanken so schnell?

Ein Thema von Matze · begonnen am 3. Jun 2010 · letzter Beitrag vom 6. Jun 2010
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#1

Was macht Datenbanken so schnell?

  Alt 3. Jun 2010, 16:04
Hallo zusammen,

im Endeffekt sind Datenbanken doch nichts anderes als Dateien, die auf Festplatten liegen. Dennoch sind Datenbanken deutlich schneller, als wenn Schreib- und Lesezugriffe manuell über Dateizugriffe erfolgen würden.

Was macht den Datenbanken so schnell?

Folgendes könnte ich mir vorstellen:
  • Suchanfragen werden durch verschiedene Indizes beschleunigt (gut, das ist Fakt)
    Wobei die Indizes wohl auch in Dateien abgelegt sind, auf die zugegriffen werden muss.
  • Lesevorgänge könnten schnell sein, wenn die Datenbank eine gewisse Intelligenz aufweist und vorab einige Dinge im RAM puffert und aus diesem ausliest.
    Aber das kann bei großen Datenmengen nicht sein. Gut, die Indizes könnten teilweise im RAM gepuffert werden.
  • Schreibzugriffe auf Dateien sind eigentlich nur dann flott, wenn eine Datei einmalig geöffnet wird und sämtliche Schreibzugriffe dann erfolgen, da die Betriebssysteme hier die Daten im RAM puffern und die Festplatte ebenfalls in ihrem Cache. Bei einem Absturz wären die Daten jedoch verloren, wenn die Datei nicht zuvor geschlossen wurde.
    Und bei Datenbanken sind die Daten nach dem Schreibvorgang zuverlässig vorhanden.
Was also macht Datenbanken so schnell?

Grüße, Matze
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#2

Re: Was macht Datenbanken so schnell?

  Alt 3. Jun 2010, 16:09
Du glaubst gar nicht wie sehr Indices in Datenbanken sich auf die Lese(!)-Geschwindigkeit auswirken können. Wenn Du als Extrembeispiel Column Stores (Datenbanken mit spaltenbasierter physischer Speicherung, oft für BI verwendet) nimmst, können diese eine riesige Menge an Daten von vorne Weg über einfache Mengenoperationen auf Indices ausschließen (z.B. in dem einfach Bit-Vektoren mit AND oder OR verknüpft werden) sodass die Zeit für eine aufwendige Suche entfällt. Solche Bitvektoren sind so klein, dass sie in einem Rutsch teilweise von der Festplatte eingelesen werden können oder sogar im Arbeitsspeicher verweilen. Einige passen auch komplett oder teilweise in den CPU-Cache hinein. Dann wird es sehr schnell

Außerdem können Datenbanken beim Schreiben von mehreren Puffern Gebrauch machen sowie - für den Benutzer unsichtbar im Hintergrund - von RAID-Verbünden und somit auf viele Datenträger verteilten Anfragen.

Das mal so grob zusammengefasst.

Als Lektüre dazu vielleicht noch interessant: http://www.amazon.de/exec/obidos/ASIN/1558607536/delphipraxis-21

Viele Grüße
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Was macht Datenbanken so schnell?

  Alt 3. Jun 2010, 16:37
Hallo,

hast es ja schon fast alles alleine beantwortet

Zitat:
Bei einem Absturz wären die Daten jedoch verloren, wenn die Datei nicht zuvor geschlossen wurde
Es gibt FlushBuffers (heisst bei NTFS nat. anders),
dann werden nur die geänderten Bereiche geschrieben,
die DB bleibt offen.


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#4

Re: Was macht Datenbanken so schnell?

  Alt 3. Jun 2010, 17:52
Hinzu kommt ja meistens auch noch, daß die Datenbank-Software exklusiven Zugriff auf die Datei(en) hat und sich nicht mit anderen Anwendungen darum streiten muss.
Uwe Raabe
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Was macht Datenbanken so schnell?

  Alt 3. Jun 2010, 17:55
Danke für die Antworten.

Dann ist es an sich gar nichts so ungewöhnliches. Ich habe nun ein super tolles Verfahren dahinter erwartet. *g*
  Mit Zitat antworten Zitat
Benutzerbild von H4ndy
H4ndy

Registriert seit: 28. Jun 2003
Ort: Chemnitz
515 Beiträge
 
Delphi XE3 Professional
 
#6

Re: Was macht Datenbanken so schnell?

  Alt 3. Jun 2010, 19:03
Zitat von Matze:
Ich habe nun ein super tolles Verfahren dahinter erwartet. *g*
Die super tollen Verfahren liegen in der hochgradigen Optimierung, um moeglichst wenig auf der Festplatte machen zu muessen.
Dazu kommt noch geschicktes Parsen und verteilen der Daten in den Dateien bzw. auf der Festplatte.
Manuel
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Was macht Datenbanken so schnell?

  Alt 3. Jun 2010, 20:26
Zitat von H4ndy:
...hochgradigen Optimierung, um moeglichst wenig auf der Festplatte machen zu muessen.
a.k.a. Cache.
Zitat von H4ndy:
Dazu kommt noch geschicktes Parsen
eher nicht, unbedeutend.
Zitat von H4ndy:
und verteilen der Daten in den Dateien bzw. auf der Festplatte.
und ich dachte, der Cache wäre so wichtig (also gerade wenig File I/O.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Was macht Datenbanken so schnell?

  Alt 3. Jun 2010, 21:12
Zitat von alzaimar:
Zitat von H4ndy:
Dazu kommt noch geschicktes Parsen
eher nicht, unbedeutend.
Es ist bedeutent, wenn sich der Query Analyser "verrennt". Wir haben die Erfahrung damit das dies des öfteren bei Oracle passiert das dieser den falschen/unpassenden Index verwendet und wir dann (um Multi-DB-Support zu haben) extra für Oracle die Query etwas anders zusammenbauen müssen damit es nicht Grotten-Langsam wird.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von H4ndy
H4ndy

Registriert seit: 28. Jun 2003
Ort: Chemnitz
515 Beiträge
 
Delphi XE3 Professional
 
#9

Re: Was macht Datenbanken so schnell?

  Alt 3. Jun 2010, 21:16
Zitat von alzaimar:
a.k.a. Cache.
Viele stellen den Cache aus (zumindest schreibend), um bei einem Absturz keine Daten zu verlieren (sprich jede Aenderung wird sofort auf die Platte geschrieben).

Aber "wenig auf Festplatte machen" heisst ja auch nicht automatisch nur nen Cache zu nuzten, sondern auch die Algorithmen so zu verbessern, dass die nur ein Minimum in den Dateien "rumsuchen" muessen (eben Indizies, etc.).

@Bernhard Geyer: Wow, das nenn ich mal Inside-Infos. Haette nicht gedacht, dass eine Enterprise-Loesung solche Probleme hat.
Manuel
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: Was macht Datenbanken so schnell?

  Alt 3. Jun 2010, 21:46
Zitat von H4ndy:
@Bernhard Geyer: Wow, das nenn ich mal Inside-Infos. Haette nicht gedacht, dass eine Enterprise-Loesung solche Probleme hat.
Wir haben 3 der 4 meist verwendeten DBs (Oracle, MS SQL Server, MySQL) beim Kunden im Einsatz. Und wenn wo Probleme auftauchen dann ist es sehr oft Oracle (und es ist nicht so das Oracle die größten Installationen wären). Oracle ist auch in unserer Test-Umgebung am empfindlichsten. Ab und zu zerschießt sich Oracle selbst und dann heist es: Altes Image reaktivieren.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz