Datenbank-Block

Hallo,

beschäftige mich im Moment mit der Entwicklung von Datenbanken, bin dort in einem Projektablauf beratend involviert.

Jetzt beschäftigt mich die Frage, was genau versteht man unter einem Datenbank-Block. Bisher konnte ich in Erfahrung bringen:

„Die kleinste Bearbeitungseinheit für alle DBMS ist ein Datenbank-Block, d.h. alle Datenbankinhalte sind in der Blockstruktur gespeichert.“

Wozu benötigt man einen Datenbank-Block?
Wie groß darf ein Datenbank-Block sein?
Wie ermittelt man rechnerisch seine Größe? Welche Datenangaben benötigt man dazu?
Wie ermittelt man die Anzahl von Datenbank-Blöcken? Warum tut man dies?

Würde mich über eure Antwort freuen, gerne auch mit Quellenangabe wo ich mehr über Datenbank-Blöcke erfahren kann. Vielen Dank!

Viele Grüße
chronischer_besserwisser

Hallo chronischer_besserwisser,

ich verkneife mir mal sämtliche Kommentare zu Beratern und Consultant.

Auch ohne Quelle (naja vielleicht doch Wikipedia, auch wenn dort kein DBMS erwähnt wird) wirst Du erkennen, das man wesentlich besser mit Objekten gleicher Größe arbeiten kann, als man immer unterschiedliche Größen hat. Auch haben die Betriebssysteme und CPU-Cache die Angewohnheit, nicht nur eine Adresse sondern gleich einen ganzen Block zu lesen (sozusagen auf Verdacht, dass man eventuell auch die benachbarte Adresse lesen wird). Auch die angebliche Platzverschwendung wird relativ, wenn man sehr viele freie Plätze absuchen muss, um einen Platz mit genügender Größe zu suchen. Der Aufwand die freien Plätze aufzuräumen, um wieder eine genügend großen Platz zu erhalten, vernichtet mit Leichtigkeit bei einem DBMS mit heftiger Schreiboperationen (INSERT und DELETE) alle möglichen Vorteile einer blocklosen Implementierung.

Also die Kurzantworten auf Deine Fragen:
Wozu benötigt man einen Datenbank-Block?
* Performance
Wie groß darf ein Datenbank-Block sein?
* Hängt vom DBMS ab, sinnvoll ist eine Größe, die ein oder mehrmals in den Cache eines Speichermediums geht (bei einer guten Plattenanbindung sind dies mehrere Stufen!).
Wie ermittelt man rechnerisch seine Größe? Welche Datenangaben benötigt man dazu?
* Hier wackelt der Schwanz mit den Hund. Je nach DBMS ist eher die Frage wie breit ein Datenbankobjekt (bewusst neutral formuliert) werden kann. Ein Datenbankblock ist Systemweit über alle Datenbanken gesetzt (egal ob es breite oder sehr schmale Tabellen).
Wie ermittelt man die Anzahl von Datenbank-Blöcken? Warum tut man dies?
* Nach der obrigen Aussage geht es doch eher darum, viele Datenbankobjekte in einen Block passen. Diese Informationen müssen irgendwo verwaltet werden, damit diese Zugriffe performant ausgeführt werden können, sollte in den Konfigurationsdaten des Datenbank-Systems(!) bei einer sehr großen Anzahl von Datenbankblöcken gewissene Caches größer gestaltet werden.

Tut mir leid, wenn ich Dir bei den wenigen Hintergrund-Informationen keine PPT-Folien-reifen Erklärungen in die Feder diktieren konnte.

MfG Georg V.

P.S.: Upps, mir scheint der letzte Satz könnte doch ein Kommentar zu Consultanten gewesen sein. Ach egal er bleibt stehen.

Hallo Georg,

vielen Dank für deine Antwort, ist ein umfangreiches Thema als ich gedacht hätte.

Hast anscheinend nicht die besten Erfahrungen mit Beratern gemacht. Wenn man nach dem Sinn einer beratenen Tätigkeit fragt, dies erfüllt meist nur die Aufgabe einer Unternehmung verschiedene Wege aufzuzeigen. Vorträge sind meist einfach gehalten, damit jeder sich etwas unter einem beschriebenen Lösungsweg vorstellen kann. Muss dir an der Stelle beipflichten, dass alle Sachverhalte bei der Umsetzung ein tiefes Fachwissen benötigen und eigentlich nicht so simple umsetzbar sind wie es Anfangs meist verkauft wird. Genauso kann man nach dem tieferen Sinn des Lebens fragen und man wird ernsthaft keine Antwort darauf finden können.

viele Grüße
chronischer_besserwisser