Datenbankadministration 3. Architektur AG DBIS University of Kaiserslautern, Germany Karsten Schmidt kschmidt@informatik.uni-kl.de (Vorlage TU-Dresden) Wintersemester 2008/2009
DB2 Produktpalette DB2 Universal Database Everyplace Fingerprint-Datenbank für mobile Geräte (Handhelds) Personal Edition Einzelbenutzer RDBMS Workgroup Server Edition Client/Server RDBMS mit voller Funktionalität Lizenzierung pro Nutzer Workgroup Server Unlimited Edition Lizenzierung pro Prozessor Enterprise Server Edition Erweiterte Funktionalität, z.b. Database Partitioning Feature (DPF) Express-C Edition Kostenlose Community Version Weitere Informationen: Tutorial 730/1 (700/1) Achtung: Zertifizierung!
DB2 Architektur
DB2 Architektur
Verwaltungsserver DB2 Verwaltungsserver (admin server) max. 1 Verwaltungsserver pro DB2-Server ermöglicht Fernverwaltung Jobverwaltung (z.b. Abbrechen von Stored Procedures) Durchführen von Verwaltungstasks DB2-Discovery zum Aufspüren von Datenbanken Verwendung der DB2 Kommandozentrale Toolskatalog nimmt Informationen über Tasks und deren Ergebnisse auf Starten / Stopen nur vom DB2-Verwaltungsnutzer db2admin start stop Konfiguration GET ADMIN CFG UPDATE ADMIN CFG USING <paramater> <value>
Instanz Instanz (instance, node, database manager) Was? Logischer Kontext für Prozeduren und DB2 Kommandos mehrere Instanzen pro DB2-Server möglich enthalten Datenbanken sind untereinander unabhängig (!) Instanzen für Instanzkommandos festlegen ATTACH TO <instance> DETACH Starten / Stopen nur vom DB2-Instanzadministrator db2start db2stop Parameter GET DBM CFG [SHOW DETAIL] UPDATE DBM CFG USING <paramater> <value>
Datenbank Datenbank (database) Sammlung von logischen und physischen Datenbankobjekten Tabellen, Sichten, Indizes, Schemata, Sperren, Trigger, Prozeduren, Pakete, Puffer, Logdateien, Tabellenbereiche,... Verbindung CONNECT TO <database> [USER <username> USING <password>] CONNECT RESET Parameter GET DB CFG [SHOW DETAIL] UPDATE DB CFG USING <paramater> <value>
Tabellenbereiche
Tabellenbereiche Tabellenbereich (table space) bestimmt physische Datenablage besteht aus Behältern (Containers) Verzeichnis Datei logisches Gerät / Einheit (Device) vom System oder der Datenbank verwaltet können explizit bei Erstellung von DB-Objekten angegeben werden CREATE TABLE <name> (...) [IN <tablespace> [INDEX IN <tablespace>] [LONG IN <tablespace>]] Informationen zu Tabellenbereichen und Containers LIST TABLESPACES [SHOW DETAIL] LIST TABLESPACE CONTAINERS FOR <tbspace-id> [SHOW DETAIL]
Tabellenbereich Datenbank muss mindestens 3 Tabellenbereiche enthalten einen Katalogbereich Systemkatalogtabellen SYSCATSPACE (kann nicht gelöscht werden) einen oder mehrere Benutzertabellenbereiche nutzerdefinierte Datenbankobjekte default: USERSPACE1 einen oder mehrere temporäre Tabellenbereiche temporäre Datenbankobjekte default: TEMPSPACE1 (temporärer Systemtabellenbereich) werden beim Erzeugen einer Datenbank automatisch angelegt, können aber auch explizit spezifiziert werden CREATE DB <name> catalog tablespace (...) user tablespace (...) temporary tablespace (...)
Tabellenbereich Parameter Seitengröße (PAGESIZE) maximale Größe eines Tupels bzw. Anzahl Tupel pro Seite geringe Seitengröße bei wahlfreiem Lesen und Schreiben weniger Speicher durch unerwünschte Tupel verschwenden große Seitengröße bei Lesen vieler aufeinander folgender Tupel Anzahl E/A-Anforderungen minimieren Speicherbereichsgröße (EXTENTSIZE) Anzahl Seiten, die in einen Behälter geschrieben werden, bevor Daten in den nächsten Behälter geschrieben werden Auswirkung: Speicherauslastung, Leseperformanz Pufferpool (BUFFERPOOL)
SMS & DMS
SMS-Tabellenbereich System Managed Space (SMS) besteht aus einem oder mehreren System-Containern vom Betriebssystem verwaltet entspricht Verzeichnis im Dateisystem wächst / schrumpft dynamisch Tabellen an Tabellenbereich gebunden Speichernutzung gleichmäßig auf alle Container verveilt Tabellenbereich voll, sobald einer der Container voll ist geringer Administrationsaufwand Prefetching und Caching des Dateisystems verwendbar kein nachträgliches Hinzufügen von Containern möglich
DMS-Tabellenbereich Database Managed Space (DMS) besteht aus einem oder mehreren Datenbank-Containern von Datenbank verwaltet entspricht Datei oder unformatierter Einheit (Roheinheit) Speicherplatz wird vorallokiert (feste Größe) Tabellen können sich über mehrere Tabellenbereiche erstrecken Speichernutzung anfangs gleichmäßig auf alle Container verteilt Auffüllen größerer Container wenn kleinere voll höherer Administrationsaufwand, mehr Kontrolle über Speicherung sequentielle Speicherung der Daten (v.a. bei Einheitencontainern) Vergrößerung bzw. Verkleinerung und Hinzufügen bzw. Löschen von Containern möglich (ALTER TABLESPACE) keine Pufferung von LOB-Daten und Langfelddaten bei Einheitencontainern
Automatic Managed Storage ab Version 8.2.2: Automatic Managed Storage Entscheidung, ob SMS oder DMS durch DB2-Datenbankmanager abhängig vom Typ des Tabellenbereichs: REGULAR oder LARGE DMS (USER SYSTEM) TEMPORARY SMS muss bei Erstellung der Datenbank aktiviert sein (default ab V9) Hinzufügen und Überwachung von Containern überflüssig Typen von Tabellenbereichen LARGE: permanente Daten, nur DMS, erlaubt größere Tabellen REGULAR: permanente Daten, SMS und DMS SYSTEM TEMPORARY: temporäre Tabellen, für Sortierung, Joins usw. USER TEMPORARY: deklarierte globale temporäre Tabellen
SMS- / DMS-Container SMS-Container DMS-Container
Tabellenbereich Gründe für verschiedene Tabellenbereiche unterschiedliche Eigenschaften von SMS und DMS Performanz- und Speicheroptimierung durch verschiedene Seitengrößen, EXTENTSIZE-Werte und Pufferpools Parallelität durch Verwendung verschiedener physischer Geräte Berücksichtigung unterschiedlicher Eigenschaften von regulären und Langfeld- bzw. LOB-Daten Welcher Tabellenbereich wofür? Systemtabellenbereich SMS großer Overhead bei kleinen Tabellen bei DMS Benutzertabellenbereich viele kleine Tabellen SMS großer Overhead bei DMS sonst DMS höhere E/A-Effizienz temporärer Tabellenbereich SMS variable Größe
Spezifikation von Tabellenbereichen Spezifikation von Tabellenbereichen erforderliche Rechte: SYSCTRL, SYSADM
Pufferpools
Pufferpool Pufferpool (bufferpool) Ausführungsort für Lese- und Schreiboperationen (Cache) wichtigster Einzelbereich bei der Optimierung jedem Tabellenbereich muss Pufferpool zugewiesen werden Seitengröße von Pufferpool und Tabellenbereich müssen gleich sein keine Pufferung von LOB- und Langfelddaten default: IBMDEFAULTBP Parameter Seitengröße (PAGESIZE) siehe Tabellenbereiche Größe (SIZE) Anzahl Seiten Größe des Pufferpools
Spezifikation von Pufferpools erforderliche Rechte: SYSCTRL, SYSADM Spezifikation von Pufferpools
Self-Tuning Memory ab Version 9: Self-Tuning Memory verteilt verfügbaren Speicher zwischen verschiedenen Prozessen (Sperrverwaltung, Anfrageverarbeitung,...) der Datenbank reagiert auf Änderungen des Anfrageverhaltens passt Speicherkonfigurationsparameter und Größe des Pufferpools an, um Performanz zu optimieren betroffene Ressourcen Pufferpools (ALTER / CREATE BUFFERPOOL) Package Cache (PCKCACHESZ) Speicher für Sperren (LOCKLIST) Sortierspeicher (SORTHEAP, SHEAPTHRES_SHR) Gesamtspeicher der Datenbank (DATABASE_MEMORY) Parameter GET DB CFG [ grep "SELF_TUNING_MEM"] (default: ON)
Systemkatalog
Systemkatalog Systemkatalog enthält Beschreibung aller Datenbankobjekte besteht aus Relationen und Sichten Zusammensetzung Tabellenbereich: SYSCATSPACE Schemata: SYSIBM, SYSCAT, SYSFUN, SYSSTAT, SYSPROC SYSCAT-Schema enthält nützliche Sichten: BUFFERPOOLS TABLES VIEWS INDEXES TABLESPACES SCHEMATA REFERENCES CHECKS Beispiel SELECT * FROM SYSCAT.TABLES
Beispiel: Integritätsbedingungen Integritätsbedingungen abgelegt in SYSCAT.TABCONST NAME: Name der Integritätsbedingung TYPE: Primärschlüssel (P), UNIQUE-Constraint (U), Femdschlüssel (F), CHECK-Constraint (K) weitere Details SYSCAT.INDEXES (Primärschlüssel, UNIQUE-Constraint) SYSCAT.REFERENCES (Fremdschlüssel) SYSCAT.CHECKS (CHECK-Constraint) DB2=> SELECT * FROM SYSCAT.TABCONST CONSTNAME TABSCHEMA TABNAME OWNER TYPE ENFORCED CHECKEXISTINGDATA ENABLEQUERYOPT... ----------- --------- ------- ----- ---- -------- ----------------- -------------- --- ORDERS_PK PR ORDERS PR P Y I Y ORDERS_FK_1 PR ORDERS PR F Y I Y
Zusammenfassung DB2 Produktpalette von der mobilen Datenbank bis zum vollen Client/Server-System DB2 Architektur Verwaltungsserver Instanz Datenbank Tabellenbereiche & Container Pufferpools DB2 Systemkatalog Beschreibung aller bekannten Datenbankobjekte