210 likes | 289 Views
Datenbank-Objekte. DB-Objekt Speicherung von Oracle. Inhalt. Allgemeines logische und physische Objekt-Speicherung Tablespaces Segmente Extents Blöcke Datafiles Möglichkeiten zur Optimierung. Allgeimeines : bekannte DB-Objekte.
E N D
Datenbank-Objekte DB-Objekt Speicherung von Oracle
Inhalt • Allgemeines • logische und physische Objekt-Speicherung • Tablespaces • Segmente • Extents • Blöcke • Datafiles • Möglichkeiten zur Optimierung
Allgeimeines : bekannte DB-Objekte • Tabellen (Relationale Tabellen, Objekttabellen, XML Tabellen) • Views • Materialized Views • Indexe • Cluster • Package • Prozeduren, Funktionen, Trigger • Sequenz • Objektypen
Allgeimeines • Oracle speichert den gesamten Datenbestand einer DB in logischen Einheiten • Diese Einheiten haben eine Hierarchie • Grundsätzlich werden Tabellen, Indexe, Cluster usw. als DB-Objekte bezeichnet
Logische Speicherung von DB-Objekten • Jedes Objekt wird in genau einem Segment gespeichert • Jedes Segment besteht aus mindestens einem Extent (Abgrenzung) • Jedes Extent besteht aus Blöcken • Ein Block ist physisch zusammenhänger Plattenspeicher fester Größe • Die Blöcke eines Extents sind auf der Festplatte benachbarte Speicherbereiche
Tablespace • logische Einheit zum Abspeichern von Objekten • Oracle verwaltet alle Objekte in Tablespaces • besteht aus mindestens einem Datafile • ein Datafile gehört zu genau einem Tablespace
Tablespaces dienen … • ... der Trennung von Daten nach Zusammenhang / Wichtigkeit (SYSTEM-Tablespace) • ... der Verteilung der Daten auf verschiedenen Plattenspeichern z.B für Rollback Informationen (UNDO-Tablespace) • ... Zwischenablage für bestimmte Funktionen, z.B. Zwischenspeicherung beim Sortieren (TEMPORARY Tablespace)
Segment • Jedes DB-Objekt eines Tablespaces wird in genau einem Segment gespeichert. • Partionierung von (großen) DB-Objekten erfolgt über die seperate Speicherung in verschiedenen Segementen.
Extent • Ein Segment besteht aus einem oder meheren Extents • Extents haben ein maximales Fassungsvermögen. Wenn in einem Segment neuer Speicher alloziert werden soll, dann müssen gegebenenfalls neue Extents angelegt werden. • Deshalb sind logisch benachbarte Extents nicht zwingend physisch benachbart.
Block (data block, logical block) • Extents werden in Blöcken alloziert • Blöcke sind die kleinste logische Einheit bei der Objektspeicherung von Oracle • Blöcke beziehen sich auf eine bestimmte Anzahl von aufeinander folgenden Bytes eines Datafiles • mögliche Größen: 2 KB, 4 KB, 8 KB, 16 KB (Parameter : DB_BLOCK_SIZE)
Optimierung : Einstellungsmöglichkeiten • Allozierung von Extents • Auf Objekt-Ebene • Beispiel • Auf Tablespace-Ebene • AUTOALLOCATE • UNIFORM • Beispiel • Größe von Datafiles
Allozierung von Extents • Auf Objekt-Ebene möglich für die meisten CREATE-/ALTER Klauseln • Hier überschreiben die Einstellungen für das jeweilige Objekt die Einstellungen des Tablespaces
Beispiel CREATE TABLE testBeispieltabelle Test ( a number (8), s varchar2 (100) ) TABLESPACE USERS Test wird im Tablespace Users angelegt STORAGE ( initial 1M erstes Extent hat die Größe 1 MBnext 100K nächstes Extent hat die Größe 100 KBminextents 1 maxextents 100 pctincrease 50 Jedes weitere Extent ist 50 % größer als sein Vörgänger );
Allozierung von Extents auf Tablespace-Ebene • Zum einen kann bei der Erstellung eines Tablespaces die generelle Methode zum Allozieren von Extents festgelegt werden. • Es stehen die Methoden UNIFORM und AUTOALLOCATE zum Allozieren zur Verfügung
Allozierung von Extents auf Tablespace-Ebene • AUTOALLOCATE : • Oracle übernimmt die Festlegung der Speichergröße bei der Allozierung neuer Extents. • Dabei wird mit Extents der Größe 64 KB begonnen. Später werden immer größere Extents alloziert • UNIFORM : • Es wird zu Beginn festgelegt, dass alle Extents im Tablespace eine feste Größe haben • Die gewünschte Größe kann dabei angegeben werden, Default : 1 MB
Beispiel CREATE TABLESPACE test_tablespace DATAFILE '/emc/oradata/test_tablespace1.dbf' SIZE 50M EXTENT MANAGEMENT LOCAL AUTOALLOCATE; CREATE TABLESPACE test_tablespace DATAFILE '/emc/oradata/test_tablespace1.dbf' SIZE 50M EXTENT MANAGEMENT LOCAL UNIFORM SIZE 512K;
Optimierung • Wenn bekannt ist, wie die DB-Objekte wachsen, dann kann mittels UNIFORM eine Performance-Steigerung erzielt werden, in dem Fragmentierung verringert wird. • Bei AUTOALLOCATE wird möglicherweise zunächst zu wenig Speicher, später zuviel Speicher alloziert. • Wahrscheinlich werden die Speicherbereiche auch nicht aufeinander folgen -> erhöhte I/O–Kosten beim Zugriff • vorallem Scan-Operationen profitieren von großen Extents, da diese zusammenhängenden Plattenspeicher garantieren
Optimierung • Größe von Datafiles bei uniformen Extents • Da Extents hintereinander im Datafile alloziert werden, kann Fragmentierung nur am Ende des Datafiles auftreten (übrige Blöcke, die kein ganzes Extent mehr bilden können) • Oracle verwendet in der Regel den ersten Block jedes Datafiles für interne Steuerinformationen. • Daher sollten Datafiles grundsätzlich folgende Größe haben : Ein ganzzahliges Vielfaches der im Tablespace festgelegten Größe + 1