DB2 Universal Database - Systemverwaltung


Speicherarchitektur

Im Verlauf der Darstellung der Speicherarchitektur werden folgende Punkte in Betracht gezogen:

Datenbankverzeichnis

Beim Erstellen einer Datenbank werden zugehörige Informationen einschließlich Standardinformationen in einem Verzeichnis gespeichert. Die Verzeichnisstruktur wird an der Lokation für Sie erstellt, die im Befehl CREATE DATABASE angegeben wurde. Wenn Sie beim Erstellen der Datenbank die Lokation des Pfads oder Laufwerks nicht angeben, wird die Standardlokation verwendet.

Es empfiehlt sich, daß Sie explizit angeben, wo die Datenbank erstellt werden soll.

In dem Verzeichnis, das im Befehl CREATE DATABASE angegeben wurde, wird unter Verwendung des Exemplarnamens ein Unterverzeichnis erstellt. Dieses Unterverzeichnis stellt sicher, daß Datenbanken, die in verschiedenen Exemplaren in demselben Verzeichnis erstellt wurden, nicht denselben Pfad verwenden. Unter dem Unterverzeichnis mit dem Exemplarnamen wird ein Unterverzeichnis mit dem Namen "NODE0000" erstellt. Dieses Unterverzeichnis wird zur Unterscheidung von Partitionen in einer Umgebung mit mehreren logischen partitionierten Datenbanken verwendet. Unter dem Knotenverzeichnis (Node=Knoten) wird ein Unterverzeichnis mit dem Namen "SQL00001" erstellt. Dieses Unterverzeichnis wird unter Verwendung des Datenbank-Token benannt und stellt die Datenbank dar, die gerade erstellt wird. Darüber hinaus wird es dazu verwendet, Datenbanken zu unterscheiden, die in diesem Exemplar unter dem Verzeichnis erstellt wurden, das Sie im Befehl CREATE DATABASE angegeben haben.

Die Verzeichnisstruktur würde also folgendermaßen aussehen:

   <ihr_verzeichnis>/<ihr_exemplar>/NODE0000/SQL00001/

Das Datenbankverzeichnis enthält mehrere Dateien, die durch den Befehl CREATE DATABASE erstellt wurden. Informationen zum Pufferpool sind in den folgenden Dateien enthalten: SQLBP.1 und SQLBP.2. Informationen zum Tabellenbereich sind in den folgenden Dateien enthalten: SQLSPCS.1 und SQLSPCS.2. Von diesen Dateien sind jeweils zwei Exemplare vorhanden, damit die Informationen darin gesichert werden können.

Informationen zur Datenbankkonfiguration sind in der folgenden Datei enthalten: SQLDBCON. Die Protokolldatei db2rhist.asc und ihre Sicherungsdatei db2rhist.bak können von Ihnen gelesen werden und enthalten Protokolldaten zu Sicherungen, zu Wiederherstellungen, zum Laden von Tabellen, zur Reorganisation von Tabellen, zum Ändern des Tabellenbereichs und zu anderen Änderungen an einer Datenbank.

Die Protokollsteuerdatei SQLOGCTL.LFH enthält Informationen zu den aktiven Protokollen. Die Wiederherstellungsverarbeitung verwendet Informationen aus dieser Datei um festzustellen, an welcher Stelle in den Protokollen die Wiederherstellung beginnen soll. Das Unterverzeichnis SQLOGDIR enthält die eigentlichen Protokolldateien.
Anmerkung:Sie sollten sicherstellen, daß das Unterverzeichnis für die Protokolle anderen Platten zugeordnet ist als denen, die für Ihre Daten verwendet werden. Ein Plattenproblem kann in diesem Fall auf Ihre Daten bzw. Ihre Protokolle beschränkt werden, so daß nicht beide gleichzeitig davon betroffen sind. Dies kann zudem einen deutlichen Vorteil für die Leistung mit sich bringen, da die Protokolldateien und die Datenbankbehälter nicht um das Verschieben derselben Plattenkopfsätze konkurrieren. Sie können die Lokation des Protokollunterverzeichnisses mit Hilfe des Konfigurationsparameters newlogpath der Datenbank ändern.

Die SQLT*-Unterverzeichnisse werden erstellt und enthalten die standardmäßigen SMS-Tabellenbereiche (SMS - System Managed Space, vom System verwalteter Speicher), die für eine Datenbank in Betrieb erforderlich sind. Die folgenden drei standardmäßigen Tabellenbereiche werden erstellt:

In Zusammenhang mit Tabellenbereichen werden Sie auch über "Behälter" lesen. Bei SMS-Tabellenbereichen sind Behälter Betriebssystemverzeichnisse.

Jedes Unterverzeichnis bzw. jeder Behälter verfügt über eine darin erstellte Datei mit dem Namen "SQLTAG.NAM". Diese Datei markiert das betreffende Unterverzeichnis als in Gebrauch, so daß bei späteren Erstellungsoperationen für Tabellenbereiche nicht versucht wird, solche Unterverzeichnisse zu verwenden. Es gibt auch weitere Dateien, die in den Behälterunterverzeichnissen erstellt werden und über verschiedene Erweiterungen für ihre Namen verfügen, wodurch zwischen den darin gespeicherten Datentypen unterschieden werden kann. Es gibt folgende Erweiterungen:

Tabellenbereiche

Es gibt zwei unterstützte Arten von Tabellenbereichen: System Managed Space (SMS, vom System verwalteter Tabellenbereich) und Database Managed Space (DMS, vom Datenbankmanager verwalteter Tabellenbereich). Beide haben eigene Kenndaten, wodurch sie für verschiedene Umgebungen geeignet sind. Weitere Informationen finden Sie in Entwerfen und Auswählen von Tabellenbereichen.

SMS-Tabellenbereiche

SMS-Tabellenbereiche (SMS - System Managed Space, vom System verwalteter Speicher) speichern Daten in Betriebssystemdateien. Die Daten in den Tabellenbereichen werden einheitenübergreifend in Speicherbereichen in allen Behältern des Systems gespeichert. Ein Speicherbereich ist eine Gruppe von aufeinanderfolgenden Seiten, die für die Datenbank definiert sind. Jede Tabelle in einem Tabellenbereich erhält ihren eigenen Dateinamen, der in allen Behältern verwendet wird. Die Dateierweiterung bezeichnet den Datentyp, der in der betreffenden Datei gespeichert wird. Der Startspeicherbereich für alle Tabellen wird "reihum" in allen Behältern plaziert. Dadurch wird der Platzbedarf auf alle Behälter im Tabellenbereich gleichmäßig verteilt. Dies ist sehr wichtig, wenn es eine große Zahl kleiner Tabellen gibt.

Die Zuordnung von Speicherbereich erfolgt, wenn Bedarf für zusätzlichen Speicherbereich besteht. Standardmäßig wird Speicherbereich jeweils Seite für Seite zugeordnet.

DMS-Tabellenbereiche

Bei einem DMS-Tabellenbereich (DMS - Database Managed Space, vom Datenbankmanager verwalteter Tabellenbereich) steuert der Datenbankmanager den Speicherbereich. Wenn der DMS-Tabellenbereich definiert wird, wird eine Liste mit Einheiten oder Dateien ausgewählt, die zu diesem gehören sollen. Der Speicherbereich in diesen Einheiten oder Dateien wird durch den DB2-Datenbankmanager verwaltet. Wie auch SMS-Tabellenbereiche und Behälter verwenden DMS-Tabellenbereiche und der Datenbankmanager einheitenübergreifendes Lesen und Schreiben von Daten für Speicherbereiche, um eine gleichmäßige Verteilung von Daten auf alle Behälter sicherzustellen.

DMS-Tabellenbereiche unterscheiden sich von SMS-Tabellenbereichen dadurch, daß bei ersteren Speicherbereich zugeordnet wird, wenn der Tabellenbereich erstellt wird, und nicht erst, wenn er benötigt wird.

Darüber hinaus kann sich die Plazierung von Daten bei beiden Arten von Tabellenbereichen unterscheiden. Betrachten Sie beispielsweise den Bedarf nach effizienten Tabellensuchoperationen: Es ist wichtig, daß die Seiten in einem Speicherbereich physisch aneinandergrenzen. Bei SMS entscheidet das Dateisystem des Betriebssystems, wo die logischen Dateiseiten physisch abgelegt werden. Die Seiten können aneinandergrenzend zugeordnet werden, müssen aber nicht. Dies hängt von der Stufe der anderen Aktivitäten im Dateisystem und dem Algorithmus ab, der zum Bestimmen der Plazierung verwendet wird. Bei DMS jedoch kann der Datenbankmanager sicherstellen, daß die Seiten physisch aneinandergrenzen, da er eine direkte Schnittstelle zur Platte aufweist.

Zu dieser allgemeinen Feststellung bezüglich der aneinandergrenzenden Plazierung von Seiten im Speicher gibt es eine Ausnahme. Es gibt beim Arbeiten mit DMS-Tabellenbereichen die zwei folgenden Behälteroptionen: unformatierte Einheiten und Dateien. Beim Arbeiten mit Dateibehältern ordnet der Datenbankmanager den gesamten Behälter während der Erstellung des Tabellenbereichs zu. Ein Ergebnis dieser ersten Zuordnung des gesamten Tabellenbereichs besteht darin, daß die physische Zuordnung normalerweise direkt aneinandergrenzend erfolgt, obwohl das Dateisystem die Zuordnung vornimmt. Dies ist allerdings nicht garantiert der Fall. Beim Arbeiten mit Behältern aus unformatierten Einheiten übernimmt der Datenbankmanager die Steuerung der gesamten Einheit und stellt immer sicher, daß die Seiten in einem Speicherbereich direkt aneinandergrenzend sind.

Im Unterschied zu SMS-Tabellenbereichen müssen die Behälter, aus denen ein DMS-Tabellenbereich besteht, in bezug auf ihre Kapazität nicht annähernd gleich sein. Es empfiehlt sich jedoch, daß die Behälter in bezug auf ihre Kapazität gleich oder annähernd gleich sind. Darüber hinaus kann in einem DMS-Tabellenbereich jeder verfügbare freie Speicherbereich verwendet werden, wenn ein bestimmter Behälter voll ist.

Beim Arbeiten mit DMS-Tabellenbereichen sollten Sie in Betracht ziehen, jeden Behälter einer anderen Platte zuzuordnen. Dadurch wird die Tabellenbereichskapazität vergrößert und die Möglichkeit geschaffen, parallele E/A-Operationen zu nutzen.

Die folgende Abbildung zeigt die logische Adressenzuordnung für einen DMS-Tabellenbereich.

Abbildung 69. DMS-Tabellenbereiche

DMSTBLSP

Die Anweisung CREATE TABLESPACE erstellt einen neuen Tabellenbereich in einer Datenbank, ordnet diesem Tabellenbereich Behälter zu und trägt Tabellenbereichsdefinition und -attribute in den Katalog ein. Einer der Werte, der beim Erstellen des Tabellenbereichs definiert wird, ist die Größe des Speicherbereichs. Ein Speicherbereich ist die Einheit der Bereichszuordnung in einem Tabellenbereich. Er ist einfach eine Reihe direkt aufeinanderfolgender Seiten. Die Größe des Speicherbereichs ist die Zahl direkt aufeinanderfolgender Seiten. Nur eine einzige Tabelle (oder ein anderes Objekt, wie z. B. ein Index) kann die Seiten in einem einzelnen Speicherbereich verwenden. Alle Objekte (Tabellen, Indizes und andere), die in dem betreffenden Tabellenbereich erstellt wurden, werden Speicherbereichen in einer Adressenzuordnung für einen logischen Tabellenbereich zugeordnet. Ein Speicherbereich gehört zu einem bestimmten Zeitpunkt jeweils nur zu einem Objekt. Die Zuordnung von Speicherbereich wird über SMP verwaltet (SMP - Space Map Pages, Speicherzuordnungsseiten).

Der erste Speicherbereich in der Adressenzuordnung für den logischen Tabellenbereich besteht aus den Kopfdaten für den Tabellenbereich, die interne Steuerdaten enthalten. Der zweite Speicherbereich ist der erste Speicherbereich der SMP für den Tabellenbereich. SMP-Speicherbereiche sind in regelmäßigen Abständen über den gesamten Tabellenbereich verteilt. Jeder SMP-Speicherbereich besteht einfach aus einer Bitzuordnung der Speicherbereiche vom aktuellen SMP-Speicherbereich bis zum nächsten. Die Bitzuordnung wird dazu verwendet, zu überprüfen, welche der dazwischenliegenden Speicherbereiche in Gebrauch sind und welche nicht.

Der auf die SMP folgende Speicherbereich ist die Objekttabelle für den Tabellenbereich. Die Objekttabelle ist eine interne Tabelle, die protokolliert, welche Benutzerobjekte im Tabellenbereich vorhanden sind und wo sich deren erster EMP-Speicherbereich (EMP - Extent Map Page, Speicherbereichszuordnungsseite) befindet. Jedes Objekt verfügt über eigene EMPs, die eine Zuordnung zu allen Seiten des Objekts darstellen, das in der Adressenzuordnung für den logischen Speicherbereich gespeichert ist.

Die Objekttabelle ist eine interne relationale Tabelle, die eine Objektkennung zur Lokation des ersten EMP-Speicherbereichs der Tabelle zuordnet. Dieser EMP-Speicherbereich stellt, direkt oder indirekt, alle Speicherbereiche im betreffenden Objekt dar. Jede EMP enthält eine Reihe von Einträgen. Jeder Eintrag ordnet eine zum Objekt relative Speicherbereichsnummer einer zum Tabellenbereich relativen Seitennummer zu, an der sich der Objektspeicherbereich befindet. Direkte EMP-Einträge ordnen Adressen, die zum Objekt relativ sind, direkt Adressen zu, die zum Tabellenbereich relativ sind. Die letzte EMP-Seite im ersten EMP-Speicherbereich enthält indirekte Einträge. Indirekte EMP-Einträge ordnen EMP-Seiten zu, die anschließend Zuordnungen zu Objektseiten herstellen. Die letzten 16 Einträge in der letzten EMP-Seite im ersten EMP-Speicherbereich enthalten doppelt indirekte Einträge.

Die Speicherbereiche der Adressenzuordnung für den logischen Tabellenbereich werden "reihum" einheitenübergreifend in den Behältern gespeichert, die dem Tabellenbereich zugeordnet sind.

Vergleich von SMS- und DMS-Tabellenbereichen

Vergleicht man SMS- und DMS-Tabellenbereiche, so stellt man fest, daß SMS-Tabellenbereiche eine hervorragende Wahl für allgemeine Zwecke sind. SMS-Tabellenbereiche bieten eine sehr gute Leistung bei geringem Verwaltungsaufwand. DMS-Tabellenbereiche sind die beste Wahl, wenn Sie eine Spitzenleistung erreichen möchten. Einheitenbehälter bieten die beste Leistung, da beim Verschieben von Daten unter Verwendung von Dateibehältern oder SMS-Tabellenbereichen doppelte Speicherung im Puffer auftreten kann. (Doppelte Speicherung im Puffer kann auftreten, wenn die Daten erst auf Datenbankmanagerebene und anschließend auf Dateisystemebene im Puffer zwischengespeichert werden.)


[ Seitenanfang | Vorherige Seite | Nächste Seite | Inhaltsverzeichnis | Index ]