© 2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. NORBERT DENNE Theorie und Praxis DGD-Edition DB2 - Theorie und Praxis Inhaltsverzeichnis Inhaltsverzeichnis Relationales Modell 1.1 1.2. 1.3 1 Entwicklungsgeschichte ' 1.1.1 Entwicklung innerhalb IBM 1.1.2 Entwicklung außerhalb IBM . 1.1.3 Kompatibilität zu DB2/MVS bzw. DB2 for OS/390 1.1.3.1 Kompatibilität zwischen den IBM-DB2-Produkten 1.1.3.1.1 DB2-UDB - Universal Database V5 1.1.3.2 Kompatibilität zwischen Fremdhersteller-Produkten und DB2-Produkten " 1.1.4 Standardisierung von Datenbank-Methoden und Techniken 1.1.4.1 Standardisierungs-Organisationen 1.1.4.2 Wichtige allgemeine Standards 1.1.4.3 Datenbank-Standards 1.1.4.3.1 SQL-Standards 1.1.4.3.2 ANSI/SPARC 3-Schemata-Modeli 1.1.5 Entwicklungsgeschichte von DB2-MVS bzw. DB2 for OS/390 1.1.5.1 Grober Überblick 1.1.5.2 Die wesentlichen Funktionen der Release-Entwicklungen 1.1.5.2.1 Version 2 - Release 1 • . 1.1.5.2.2 Version 2 - Release 2 1.1.5.2.3 Version 2 - Release 3 . 1.1.5.2.4 Version 3 , ' 1.1.5.2.5 Version 4 1.1.5.2.6 Version 5 - DB2 for OS/390 1.1.5.2.7 ... und was kommt nach Version 5? Terminologie ' 1.2.1 Informationsablage in Tabellenform 1.2.1.1 Tabelle (Table, Relation) 1.2.1.2 Spalte (Attribut) 1.2.1.3 Zeile (Tupel) 1.2.1.4 Datenwert (Value) 1.2.1.5 Primary-Key (PK) 1.2.1.6 Foreign-Key (FK) 1.2.1.7 Index 1.2.1.8 Daten-Repräsentation und -Ablage 1.2.2 Informationsbeziehungen 1.2.3 Relationale Sprachschnittstelle 1.2.3.1 SQL . 1.2.3.3 QBE 1.2.3.2 QUEL 1.2.4 Terminologievergleich konventionelle Systeme - RDBMS 1.2.5 Schwächen des Relationen-Modells 1.2.6 Die Auswirkungen der bisherigen Standardisierungsmaßnahmen Anforderungen an ein relationales DBMS 1.3.1 Codd'sches Anforderungsprofil - RM/V2 1.3.2 Problemzonen konventioneller DBMS-Typen 1.3.2.1 Strukturierte DBMS 1.3.2.2 Lineare DBMS 1.3.2.3 Komplexe DBMS (OODBMS) 1.3.2.4 Fazit 1.3.3 Standard-SQL DB2-System-Aufbau 2.1 DB2-System-Komponenten und Zusatz-Produkte 2.1.1 DB2-System-Komponenten 2.1.2 DB2-Zusatz-Produkte von IBM 2.1.2.1 MVS- bzw. OS/390-Plattform 2.1.2.1 Workstation-Plattform 2.1.3 Sonstige Tools von IBM 2.1.4 Sonstige Tools diverser Software-Hersteller 2.1.4.1 Entwicklungswerkzeuge für die PAEs 2.1.4.2 Verwaltungswerkzeuge für die DBADMs _ .* 1 1 1 2 2 2 4 4 4 5 5 6 7 8 8 9 9 10 11 13 15 18 23 25 25 25 25 26 26 27 27 30 31 31 32 35 36 36 37 37 38 39 39 51 51 52 54 57 58 61 61 61 61 61 62 62 63 63 63 DB2 - Theorie und Praxis Inhaltsverzeichnis 2.2 Betriebssystem-Komponenten 2.2.1 MVS-System-Schichten 2.2.2 DB2-Subsystem (Lokation oder Server) 2.2.3 DB2-Adreßraum-Konzept 2.2.3.1 2.2.3.2 2.2.3.3 2.2.3.4 2.2.3.5 2.3 65 65 66 68 Trägersysteme (Allied Agents) System-Dienste (System Services) Datenbank-Dienste (Database Services) Internal Resource-Lock-Manager (IRLM) Distributed Data Facilities (DDF) 69 69 69 70 70 Anwendungs-Kommunikations-Komponenten 2.3.1 Attach-Facility, Connection und Thread 2.3.2 Zugriff auf DB2-Ressourcen aus Anwendungen heraus 71 71 71 2.3.2.1 2.4 2.5 Schnittstellen zu den Trägersystem-Typen 2.3.2.1.1 TSO-Schnittstelle (DSNELI) 2.3.2.1.2 CICS-Schnittstelle (DSNCLI) 2.3.2.1.3 IMS-Schnittstelle (DFSLI000) 2.3.2.1.4 Batch-Schnittstelle mit CAF (DSNALI) 2.3.2.1.5 Recoverable Resource Manager-Schnittstelle (DSNRLI) 2.3.2.2 Dateiverarbeitungsmöglichkeiten der Trägersystem-Typen 2.3.3 Der Einsatz von Stored Procedures 2.3.3.1 System-Konzept 2.3.3.2 Vorteile und Nachteile von Stored Procedures Daten-Kommunikations-Komponenten 2.4.1 Verteilung der DB2-Daten (distributed data) 2.4.1.'1 Die Client-Server-Architektur (C/S) 2.4.1.2 DRDA - Distributed Relational Database Architecture 2.4.1.2.1 Systemgesteuerter Zugriff 2.4.1.2.2 Anwendungsgesteuerter Zugriff v 2.4.1.3 Technologische Grenzen der Verteilung von Daten 2.4.2 Gemeinsame Nutzung der DB2-Daten (shared data) 2.4.2.1 DB2 Data Sharing (DS) 2.4.2.1.1 Argumente für Data Sharing 2.4.2.1.2 Data Sharing im MVS-Sysplex 2.4.3 DPROP - Data Propagator (IMS-DB2, DB2-IMS) DB2-Objekte, DB2-System-Ressourcen einer Lokation 2.5.1 DB2-Objekt-Typen 2.5.1.1 Benutzerorientierte DB2-Objekt-Typen 2.5.1.1.1 Tabelle/Table (Base Table) 2.5.1.1.2 Temporäre Tabelle/Table (Global Temporary Table) 2.5.1.1.3 DB2-View (Virtual Table) 2.5.1.1.4 Synonym 2.5.1.1.5 Alias ' 2.5.1.2 Systemorientierte DB2-Objekt-Typen 2.5.1.2.1 Index 2.5.1.2.2 Tablespace 2.5.1.2.3 Indexspace 2.5.1.2.4 DB2-Database 2.5.1.2.5 Storage Group 2.5.2 DB2-System-Ressourcen • 2.5.2.1 DB2-Directory - Database DSNDB01 2.5.2.2 DB2-Katalog-Database DSNDB06 2.5.2.3 Workfiles - Database DSNDB07 2.5.2.4 Datenspeicherung von System-und Benutzerdaten 2.5.2.5 Utility-Arbeitsdateien 2.5.2.6 Log-Dateien • 2.5.2.7 Bootstrap-Dateien 2.5.2.8 DB2-Bibliotheken , Voraussetzungen für eine DB2-Einführung 3.1 110 Allgemeine Voraussetzungen 3.1.1 Personelle Voraussetzungen 3.1.2 3.1.1.1 Daten-Administration (DA) 3.1.1.2 Datenbank-Administration (DBA) Organisatorische Voraussetzungen 3.1.2.1 Auswirkung auf die Anwendungs-Entwicklung 71 71 72 72 72 73 73 74 74 75 76 76 77 78 81 82 84 85 86 86 87 89 91 91 92 92 95 96 98 99 100 100 103 104 104 105 106 106 107 107 108 108 108 109 109 110 111 * A 111 111 112 112 DB2 - Theorie und Praxis Inhaltsverzeichnis 3.1.3 3.2 3.3 3.4 3.5 3.6 4 DB2-Sprachschnittstellen ,| Ü 4.1 4.2 i I 4 : i ! . 4.3 t ! j ! . : i | I : : j | \ I ' l | Technische Voraussetzungen für DB2 Version 5 for OS/390 3.1.3.1 Hardware 3.1.3.2 Betriebssystem-Software ' 3.1.3.3 Betriebssystemnahe Standard-Software 3.1.3.4 Programmiersprachen 3.1.3.5 TP-Monitore u'nd-Query-Manager 3.1.3.6 Anwendungsentwicklungs-Tools 3.1.4 Weitere Voraussetzungen für DB2 3.1.4.1 Integritätssicherung 3.1.4.2 Namenskonventionen 3.1.4.2.1 Lokale DB2-Objekte 3.1.4.2.2 Verteilte DB2-Objekte (remote) 3.1.4.2.3 Sprechende Objektnamen versus nichtsprechende Namen Abgrenzung Produktionssystem-Testsystem Datenbank-Hierarchie Informations-Aktualität Was ist neu im DB2? Migration ins DB2 . Benutzergruppen und deren Anforderungen DB2-Sprachschnittstellen für die Benutzergruppen 4.2.1 Übersicht der TSO-DSN-Commands 4.2.2 Übersicht der SQL-Statements 4.2.3 DB2-Befehle/DB2-Commands 4.2.4 DB2-Hilfsprogramme/DB2-Utilities 4.2.5 Standalone Utilities/Service Aids 4.2.6 IMS-Commands v 4.2.7 CICS-Commands 4.2.8 MVS-Commands 4.2.9 TSO-CLISTs DB2I: Masken der interaktiven DB2-Oberfläche 4.3.1 Einstiegs-Menü (Primary Option Menü) 4.3.2 D - DB2I-Defaults 4.3.2.1 Cobol-Defaults 4.3.3 1 - SPUFI: SQL Processor Using File Input 4.3.3.1 SPUFI-Steuerungsmaske 4.3.3.2 SPUFI-Defaults 4.3.3.3 SPUFI-Edit-Maske 4.3.3.4 SPUFI-Browse-Maske 4.3.4 2 - DCLGEN: Declarations Generator 4.3.4.1 Eingabemaske 4.3.4.2 Beispiel einer generierten Ausgabe 4.3.5 3 - Program Preparation 4.3.5.1 Steuerungsrriaske 4.3.5.2 Program Preparation'Compile, Link and Run Panel.' 4.3.5.3 Include des Attachment-Facilities von SYSLIB 4.3.5.4 Beispiel einer generierten Umwandlungs-Prozedur 4.3.6 4-Precompile 4.3.7 5- BIND /REBIND / FREE 4.3.7.1 BINDPACKAGE 4.3.7.1.1 Steuerungsmaske 4.3.7.1.2 Default Panel BIND PACKAGE 4.3.7.1.3- System Connection Type Panel 4.3.7.1.4 Connection Names Panel 4.3.7.2 BIND PLAN 4.3.7.2.1 Steuerungsmaske 4.3.7.2.2 Default Panel BIND PLAN 4.3.7.2.3 Package List Panel 4.3.8 6-Run 4.3.8.1 Anstoß über Panel " 4.3.8.2 JCL-Beispiel eines Batch-Ausführungs-Jobs 4.3.9 7 - DB2-Commands 114 114 115 115 116 117 117 118 119 120 122 123 124 126 128 129 130 132 134 _ 134 135 137 138 145 148 150 151 152 153 154 155 155 156 156 157 157 159 160 161 162 162 164 165 165 166 167 167 168 169 169 169 170 171 171 172 172 173 173 174 174 174 175 DB2 - Theorie und Praxis Inhaltsverzeichnis 4.3.10 5 i ' [ ! | |* 176 177 178 178 178 179 Steuerungsmaske Panel für Dataset Names Beispiel für generierte Utility-Macros Beispiel eines LOAD-Eingabebestandes Beispiel von LOAD-Utility-Steuerkarten Beispiel des generierten LOAD-Utility-Jobs SQL-DDL-Data Definition Language 180 180 182 185 188 190 191 192 195 5.3 5.4 1 j 176 4.3.10.1 4.3.10.2 4.3.10.3 4.3.10.4 4.3.10.5 4.3.10.6 5.1 5.2 . 6 8 - DB2-Utilities Dynamische DB2-Objektverwaltung Anlegen DB2-Objekte: CREATE 5.2.1 Beispiele CREATE Ändern DB2-Objekte: ALTER und RENAME 5.3.1 Beispiele ALTER 5.3.2 Beispiel RENAME . Löschen DB2-Objekte: DROP 5.4.1 Beispiele DROP SQL-DML-Data Manipulation Language 196 6.1 6.2 196 197 197 199 SQL-DML-Anwendungsformen SELECT - Datenabfragen 6.2.1 SELECT-Typen 6.2.2 Syntax des SELECT-Statements ;. | 6.2.2.1 6.2.2.2 6.2.2.3 ; < . '' I : ! 6.2.3 6.2.4 I 6.2.5 6.2.6 i 6.2.7 Grundformat des SELECT-Statements Die logische Abarbeitungsfolge der SELECT-Parameter SELECT-Klausel 6.2.2.3.1 Bereitstellung von Daten aus einer einzelnen Tabelle 6.2.2.3.2 Bereitstellung von Daten aus mehreren Tabellen (Join) 6.2.2.3.3 Verdichtung der Result Table (DISTINCT) 6.2.2.4 FROM-Klausel 6.2.2.4.1 Bereitstellung von Daten aus Basis-Tabellen bzw. Views . 6.2.2.4.2 Inner und Outer Join 6.2.2.4.3 Sub-Select (nested table expression) 6.2.2.5 WHERE-Klausel 6.2.2.5.1 Einfache Vergleichsoperatoren 6.2.2.5.2 Subquery 6.2.2.6 ORDER BY-Klausel 6.2.2.7 GROUP BY-Klausel Tabelleninhalte der Beispieltabellen - Abbildung 1-4 Einfache SELECT-Abfragebeispiele aus einer Tabelle 6.2.4.1 Einfache Spaltenauswahl (PROJECT) 6.2.4.2 Konstante und arithmetisch errechnete Werte 6.2.4.3 Vergabe von Namen für Spalten der Result Table 6.2.4.4 Auswahl bestimmter Zeilen mit WHERE 6.2.4.5 Variable Auswahl bestimmter Zeilen mit WHERE und CASE Boolsche Verknüpfungen und Prädikate " 6.2.5.1 AND-Verknüpfung s 6.2.5.2 OR-Verknüpfung 6.2.5.3 NOT-Verknüpfung 6.2.5.4 BETWEEN-Prädikat 6.2.5.5 IN-Prädikat 6.2.5.6 LIKE-Prädikat 6.2.5.7 NULL-Prädikat 6.2.5.8 Mix von Prädikaten und Klammerung Sortierung - ORDER BY 6.2.6.1 Auf-und absteigende Sortierung 6.2.6.2 Sortierung von abgeleiteten Spalten Funktion (Built-in-Funktion) 6.2.7.1 Column Function 6.2.7.2 Scalar Function 6.2.7.2.1 Konvertierungs-Funktion _ 6.2.7.2.2 DateTime-Funktion * 6.2.7.2.3 Sonstige Funktion 6.2.7.3 Verschachtelung von Column Function und Scalar Function 199 200 201 201 201 201 202 202 202 202 203 203 203 204 204 205 206 206 206 207 208 209 210 210 211 212 212 212 213 215 216 217 217 218 219 219 221 221 222 225 227 DB2 - Theorie und Praxis Inhaltsverzeichnis 6.2.8 Gruppierung/GROUP BY 6.2.8.1 6.2.9 6.2.10 • 6.3 6.4 6.5 7 6.2.11 230 UNION und UNION ALL Selektion aus mehreren Tabellen - JOIN 6.2.10.1 6.2.10.2 6.2.10.3 6.2.10.4 r 228 HAVING Kartesisches, Produkt Equi-Join ' Join einer Tabelle mit sich selbst Inner Join und Outer Join 6.2.10.4.1 Übersicht der Ergebnis-Typen 6.2.10.4.2 InnerJoin 6.2.10.4.3 Left Outer Join 6.2.10.4.4 Right Outer Join 6.2.10.4.5 Füll Outer Join 6.2.10.4.6 Sub-Select als Nested Table Expression 6.2.10.4.7 Verschachtelte Mehrstufen-Joins mit Sub-Select 231 233 ' • . 233 234 235 236 236 238 239 240 241 242 244 Subquery (Sub-Query) 245 6.2.11.1 6.2.11.2 Allgemeine Syntax Non-correlated Subquery 6.2.11.2.1 Subquery direkt nach einem Vergleichsoperator 6.2.11.2.2 Subquery nach IN 6.2.11.2.3 Subquery nach EXISTS . 6.2.11.2.4 Subquery nach ANY bzw. SOME und ALL 6.2.11.3 Correlated Subquery 6.2.11.3.1 Verarbeitungsunterschiede zu non-correlated 6.2.11.3.2 Subquery direkt nach einem Vergleichsoperator 6.2.11.3.3 Subquery nach EXISTS INSERT - Dateneinfügung 6.3.1 Beispiele für SQL-Dateneinfügungen l 6.3.1.1 INSERT einer einzelnen Zeile 6.3.1.2 INSERT mehrerer Zeilen 245 247 247 248 249 250 251 251 252 252 253 254 254 255 UPDATE - Datenveränderung 6.4.1 Beispiele für SQL-Datenveränderungen DELETE - Datenlöschung 6.5.1 Beispiele für SQL-Datenlöschungen 256 257 258 259 SQL-DCL-Data Control Language 260 7.1 260 260 DB2-Zugriffsschutzkonzept 7.1.1 Überblick 7.1.2 7.1.3 7.1.4 7.1.1.1 Vorüberlegungen 7.1.1.2 Welche Ressourcen können von DB2 geschützt werden? 7.1.1.3 Konsequenzen bei einer vollständigen Auslagerung auf einen ESM 7.1.1.4 Aufteilung der Sicherheitsfunktionen zwischen DB2 und einem ESM Autorisierungs-Konzept 7.1.2.1 Übergabe der Autorisierungs-Identifikatoren 7.1.2.2 Primär-, Sekundär-und Current-Autorisierungs-Id • 7.1.2.3 Zeitpunkt der Autorisierungsprüfung ' 7.1.2.3.1 Autorisierungsprüfung zur Bind-Zeit 7'.1.2.3.2 Autorisierungsprüfung zur Ausführungs-Zeit Privilegien-Konzept 7.1.3.1 Privilegien-Struktur , 7.1.3.2 Eigentümer (Owner) und Ersteller (Creator) eines Objektes 7.1.3.3 Explizite Privilegien 7.1.3.3.1 Grant-Typen und Privilegienbereiche 7.1.3.3.2 Zuordnung der Einzel-Privilegien zu DB2-Ressource-Typen 7.1.3.4 Implizite Privilegien 7.1.3.4.1 Owner eines Objekts 7.1.3.4.2 Administrations-Gruppen Welche Privilegien werden wann benötigt? 7.1.4.1 Erforderliche Privilegien zur Verwaltung der DB2-Objekte 7.1.4.2 Die erforderlichen Privilegien eines Anwendungsentwicklers 7.1.4.3 Zusammenspiel von Autorisierungs-Id-Typen und Privilegien 7.1.4.3.1 Ausführung von Dynamic SQL-Statements • 7.1.4.3.2 Plan-und Package-Aktivitäten 260 261 262 263 264 264 265 266 266 267 268 268 269 270 271 272 273 273 275 278 278 280 281 281 282 DB2 - Theorie und Praxis Inhaltsverzeichnis 7.2 7.3 7.4 8 9 GRANT - Erteilen DB2-Privilegien 7.2.1 Privilegien-Kategorien 7.2.2 Hierarchisches GRANT-Konzept 7.2.3 Beispiele GRANT REVOKE - Aufheben DB2-Privilegien 7.3.1 Beispiele REVOKE VIEW - Inhaltsbezogener Datenschutz 7.4.1 Besonderheiten bei der Anwendung in Programmen 283 283 284 286 289 292 293 294 DB2-Katalog 8.1 Aufbau und Inhalte 8.1.1 Zuordnung der Objekte zu Katalog-Tabellen 8.1.2 Referentielle Beziehungen der wichtigsten Katalog-Tabellen 8.2 Katalog-Abfragen 8.2.1 Katalog-Abfragen der Katalogbeschreibungen 8.2.2 Objekt-Abfragen für Anwendungs-Entwickler 8.2.3 Abfragen zur Überwachung der optimalen Speicherorganisation 8.2.3.1 Katalogspalten-Inhalte und kritische Werte 8.2.3.2 Katalog-Queries . 8.2.4 Katalog-Queries über referentielle Beziehungen 8.2.5 Katalog-Queries zur Unterstützung und Kontrolle des Datenschutzes 8.3 Katalog-Veränderungen 296 296 298 299 300 300 301 303 303 306 309 311 312 Verfahrensunabhängigkeit 313 9.1 9.2 Separierung logischer und physischer Aspekte DB2-Verfahrensunabhängigkeit 9.2.1 Katalog-Konzept 9.2.2 Unabhängigkeit zwischen Programmen und Daten i 313 317 317 318 9.2.2.1 9.2.2.2 9.2.2.3 I 9.3 9.4 | 9.5 Verlagerung von Programmlogik in den DB2-Katalog 320 Abhängigkeit von DB2-Katalogstrukturen und SQL-Spracheinsatz 321 Konzepte zur Erreichung einer möglichst hohen Anwendungsportabilität 324 9.2.2.3.1 Normungs-Effekt durch den SQL-Spracheinsatz 324 9.2.2.3.2 Open Database Connectivity (ODBC) und der CLI-Spracheinsatz324 9.2.2.3.3 Einsatz von Standard-Routinen 325 9.2.2.4 Abweichungen von der Katalog-Dynamik 326 Vorteile und Grenzen des DB2-View-Konzepts . 328 9.3.1 Vorteile des DB2-View-Konzepts 328 9.3.2 Grenzen des View-Konzepts . 331 Die Nutzung von Stored Procedures . 333 9.4.1 Daten-Bereitstellung und Manipulation in einer 'Black Box' 333 9.4.1.1 Vorteile einer Stored Procedure gegenüber einem Unterprogramm 334 9.4.2 Aufruf einer rerriote Stored Procedure 9.4.3 Rückgabe von Query Result Sets . 9.4.4 Stored Procedures und DB2-Views Auswirkungen auf das Anwendungs-Design 9.5.1 Sicht des Anwendungs-Programmes auf die Daten 9.5.2 Auswirkung der Daten-Modellierung auf die Programm-Sicht 9.5.3 9.5.4 9.5.2.1 Sicht auf unnormalisierte Daten . ' 9.5.2.2 Sicht auf Daten in der ersten Normalform (1 NF) 9.5.2.3 Sichtauf Daten in höheren Normalformen (2 NF, 3NF,..) Separierung der Daten-Beschaffung und -Entsorgung 9.5.3.1 Varianten beim Einsatz von Unterprogrammen und Stored Procedures 9.5.3.2 Objektorientierte Verwaltung der Daten 9.5.3.2.1 Daten-Verwaltung immer über eine zuständige Funktion . Konsequenzen eines Client-Server-Konzeptes (CS) 9.5.4.1 Zentralisierung versus Dezentralisierung 9.5.4.1.1 CS sollte in den Köpfen des Managements beginnen ... 9.5.4.1.2 CS benötigt klare Konzepte 9.5.4.1.3 Argumente für eine dezentrale Organisationsform (Verteilung) 9.5.4.1.4 Argumente für eine zentrale Organisationsform 9.5.4.1.5 Fazit 9.5.4.2 Varianten der CS-Verarbeitung 335 336 337 338 338 339 340 341 342 343 345 346 347 348 348 348 349 350 350 350 351 DB2 - Theorie und Praxis Inhaltsverzeichnis 9.5.4.3 9.5.4.4 10 Verteilungsaspekte 9.5.4.3.1 Lokale Zuordnung der Ressourcen 9.5.4.3.2 Verfügbarkeit der Ressourcen Konsequenzen einer Verteilung Datenentwurf unter DB2 10.1 10.2 10.3 Rolle des ANSI-SPARC-3-Schemata-Ansatzes Vorgehens-Modell 10.2.1 Entwicklungsgeschichte der relevanten Daten-Modelle 10.2.2 ERM - Entity-Relationship-Modell 10.2.3 Relationen-Modell (RM) 10.2.4 Gemeinsamkeiten von ERM und RM Logisches Design 10.3.1 Normalisierung 10.3.1.1 10.3.1.2 10.3.1.3 10.3.1.4 10.4 Unnormalisierte Daten 1N F - Atomic Attribute ohne Wiederhol-Elemente 2NF - Volle funktionale Abhängigkeit zu allen PK-Bestandteilen 3NF - Keine transitiven Abhängigkeiten der Nicht-PK-Attribute 10.3.1.4.1 Kritische Analyse der erreichten 3NF - Struktur-Qualität 10.3.1.5 BCNF - Volle Abhängigkeit zum Candidate Key 10.3.1.6 4NF - Keine paarweisen mehrwertigen Abhängigkeiten 10.3.1.7 5NF - Ultimative Normal Form - Project-Join-Normalform (PJ/NF) 10.3.1.8 Abschlußüberlegungen zur Normalisierung 10.3.2 Dokumentation der Daten-Design-Ergebnisse 10.3.2.1 Bubbles/Blasendiagramme 10.3.2.2 Relationale Notation 10.3.2.3 Entity Dependency Diagram 10.3.2.4 Netzwerk Diagramm v 10.3.2.5 Objektorientiertes State Transition Diagram 10.3.2.6 DB2-Unterstützungstools 10.3.3 Festlegung der referentiellen Verarbeitungs-Regeln 10.3.4 Übersicht der kompletten Integritäts-Regeln und -Maßnahmen 10.3.5 Checkliste für das logische Daten-Design 10.3.5.1 Fachliches Daten-Modell 10.3.5.2 Konzeptionelles Daten-Modell Physisches Design 10.4.1 Ableiten der physischen Benutzerobjekte aus logischen Relationen 10.4.1.1 Zielsetzungen eines physischen Daten-Modells 10.4.1.2 Kandidaten für die physische Implementierung 10.4.2 Bewertung der Auswirkungen logisch definierter Zugriffspfade .10.4.2.1 Aufwand bei der Datenbeschaffung 10.4.2.2 Individuelle Performance-Relevanz 10.4.2.3 -Auswirkungen der Sperr-Maßnahmen 10.4.3 De-Normalisierungs-Mäßnahmen 10.4.3.1 Daten-Zusammenführung 10.4.3.2 Trennung der Daten (Verteilung) 10.4.3.3 Bilden zusätzlicher Redundanzen 10.4.3.4 Konsequenzen der De-Normalisierung 10.4.4 Indizes 10.4.4.1 10.4.4.2 10.4.5 Vor- und Nachteile von Indizes Empfehlungen zum Index-Einsatz Unterstützung der referentiellen Integrität (Rl) durch DB2 10.4.5.1 10.4.5.2 10.4.5.3 10.4.5.4 10.4.5.5 10.4.5.6 Terminologie und Einrichtung unter DB2 Definierbare Strukturen 10.4.5.2.1 Zulässige Einzel-Struktur-Beziehungen 10.4.5.2.2 Logische referentielle Struktur 10.4.5.2.3 Physische referentielle Struktur (Tablespace-Set) Gesamt-Überblick über die DB2-RI-Unterstützung Anforderungen an PK und FK 10.4.5.4.1 DB2-Primary-Key (PK) und Parent Key 10.4.5.4.2 'DB2-Foreign-Key (FK) Verwaltung der Rl-Definitionen im Katalog 10.4.5.5.1 Katalog-Informationen für Rl 10.4.5.5.2 RI-DDL-Beispiele Argumente für und wider den Einsatz von DB2-RI - 352 352 352 353 354 354 356 358 359 361 363 367 368 369 371 373 375 375 377 378 381 384 385 385 386 387 388 389 390 391 394 396 396 397 399 400 400 401 401 403 406 407' 408 408 410 411 413 414 415 416 418 418 421 421 423 429 431 433 433 434 435 435 436 438 DB2 - Theorie und Praxis Inhaltsverzeichnis 10.4.6 10.4.7 10.4.8 10.4.9 11 Festlegung der sonstigen DB2-Objekte mit ihren Ausprägungen 10.4.6.1 Zuordnung Tabelle zu Tablespace 10.4.6.1.1 Zuordnung wichtiger Speicher-Charakteristiken 10.4.6.1.2 Sperrniveau und Lock-Maßnahmen 10.4.6.2 Einsatz von DB2-Views 10.4.6.3 Einsatz von DB2-Synonymen und DB2-Alias 10.4.6.4 Zuordnung Tablespace und Indexspace zur Database Festlegung der sonstigen physischen Ressourcen DB2-Unterstützungstools Checkliste für das physische DB2-Design . DB2-Datenspeicherung intern und extern 11.1 11.2 11.3 11.4 11.5 451 Übersicht der Speicherungsformen Space-Management 11.2.1 Verwaltung und Adressierung der Daten innerhalb des Page Sets 11.2.2 Page Sets 11.2.2.1 Linear Page Sets ' 11.2.2.2 Partitioned Page Sets 11.2.3 Page Typen des File Page Sets 11.2.3.1 Header Page 11.2.3.2 Space Map Pages \ 11.2.3.3 Daten Pages 11.2.3.3.1 Adressierung der Daten-Zeilen 11.2.3.3.2 Insert-Strategie innerhalb der Pages 11.2.3.3.3 Update-Strategie bei variablen Zeilen 11.2.3.3.4 Delete-Strategie innerhalb der Pages 11.2.3.3.5 Freespace-Verwaltung der Pages 11.2.3.3.6 Plattenplatz-Bedarfs-Ermittlung v 11.2.3.4 Kompression der Daten (ESA Compression) 11.2.4 Page Typen des Index Page Sets 11.2.4.1 Die Verbesserungen des Index Typs 2 11.2.4.2 Header Page 11.2.4.3 Space Map Pages 11.2.4.4 Index Pages 11.2.4.4.1 Non-Leaf Pages 11.2.4.4.2 Leaf Pages 11.2.4.4.3 Adressierung der Index Pages und der Daten Pages .11.2.4.4.4 Insert-Strategie innerhalb der Pages 11.2.4.4.5 Update-Strategie innerhalb der Pages 11.2.4.4.6 Delete-Strategie innerhalb der Pages 11.2.4.4.7 Freespace-Verwaltung der Pages 11.2.4.4.8 Plattenplatz-Bedarfs-Ermittlung Datenpool-und Bufferpool-Konzept 11.3.1 Group Bufferpools (GBP) 11.3.2 Virtuelles Bufferkonzept • 11.3.2.1 Lese-Anforderungen 11.3.2.2 Schreib-Anforderungen 11.3.2.3 Bufferpool-Thresholds 11.3.2.4 Mögliche Strategien der Bufferpool-Einrichtung 11.3.3 Parallel-Verarbeitung VSAM-Datasets 11.4.1 Nutzung von DFSMS (Storage Management Subsystem) DB2-Utilities für Datenablageunterstützung 12 DB2-Datensicherheitseinrichtungen 12.1 12.2 12.3 12.4 DB2-Sicherheitsinstrumentarium Transaktionsabwicklung LUW-, UOW-und UOR-Konzept 12.3.1 2-Phasen-Commit (Two-Phase-Commit) Probleme und Lösungswege der Konkurrenzverarbeitung 12.4.1 Verlorener Update 12.4.2 Zugriff zu Daten, deren UOW noch nicht abgeschlossen ist 12.4.3 Wiederholtes Einlesen von Daten innerhalb einer UOW 439 439 442 444 445 445 445 446 447 448 ' 451 453 453 456 456 457 458 459 460 462 464 465 466 466 467 469 472 474 474 475 475 476 478 479 480 482 482 482 483 484 488 490 491 492 494 495 496 498 500 502 503 505 " 505 507 511 515 518 519 520 521' DB2 - Theorie und Praxis Inhaltsverzeichnis 12.4.4 12.4.5 12.5 12.6 12.7 12.8 12.9 13 Lösungswege zum Abbau der Konkurrenz-Problemzonen Deadlock .12.4.5.1 Vermeidung von Deadlocks DB2-Sperrverfahren 12.5.1 Überblick 12.5.2 Transaction Lock ' 12.5.2.1 Lock-Charakteristiken 12.5.2.1.1 Lock-Objekt 12.5.2.1.2 Lock-Niveau 12.5.2.1.3 Lock-Dauer 12.5.2.1.4 Isolation-Level ' 12.5.2.1.5 Lock-Modus 12.5.2.2 Implizite Lock-Auswirkungen auf die DB2-Systemressourcen 12.5:3 Drain Lock ' 12:5.3.1 Drains und Claims • 12.5.3.2 Utility-Kompatibilitäten 12.5.4 IRLM - Infernal Resource Lock Manager 12.5.4.1 Deadlock/Timeout-Behandlung der Anwendungen 12.5.5 Die Konsistenzbewahrung bei Data Sharing (DS) 12.5.5.1 Zusammenspiel zwischen IRLM und Coupling Facility 12.5.6 Konsequenzen für die Anwendungsentwicklung 12.5.6.1 Zusammenspiel von Isolation-Level, Lock-Modus und -Dauer 12.5.6.2 Verhinderung eines Parallel-Updates • 12.5.6.2.1 Einsatz des Cursor-Konzeptes 12.5.6.2.2 Cursor-Konzept oder SELECT WITH RR bzw. RS? 12.5.6.3 Parallelverarbeitung von Online- und Batch-Anwendungen 12.5.7 Zusammenfassung der DB2-Lock-Mechanismen 12.5.7.1 Welche relevanten Parameter steuern die Lock-Mechanismen? 12.5.7.2 Checkliste für den Einsatz der DB2-Lock-Mechanismen Logging-Einrichtungen 12.6.1 Steuerungsfunktionen für die Logging-Abwicklung • 12.6.1.1 Logging-Philosophie 12.6.1.2 Loggihg-Hierarchie • 12.6.2 Führen und Ausschreiben von LOG-Informationen 12.6.3 Konsistenzsicherung innerhalb des DB2-Subsystems (REDO, UNDO) 12.6.3.1 Manuelle, nicht durch DB2 überwachte Konsistenz-Maßnahmen 12.6.4 Konsistenzsicherung,mit Allied Agents 12.6.5 Konsistenzsicherung bei DB2 Data Sharing (DS) DB2-Utilities für Datensicherheitsunterstützung 12.7.1 Zurücksetzen auf konsistenten, aktuellen synchronisierbaren Zeitpunkt 12.7.2 Zurücksetzen auf früheren, nicht mehr synchronisierbaren Zeitpunkt 12.7.3 Zurücksetzen von Katalogtabellen 12.7.4 Pending Status AUDITTRACE Problemzonen der Datensicherheitseinrichtungen Anwendungsprogrammierung unter DB2 13.1 Einsatzspektrum von DB2 13.1.1 Die verschiedenen Programm-Typen 13.1.1.1 Abgrenzung Dialog-, Online-und Batch-Verarbeitung 13.1.1.1.1 Was versteht man unter Batch-Verarbeitung? 13.1.1.1.2 Brauchen wir noch die Batch-Verarbeitung? 13.1.1.1.3 Abgrenzung der Online-und Batch-Charakteristiken 13.1.2 Wahl des geeigneten Trägersystems 13.1.2.1 Dialog-Verarbeitung 13.1.2.1.1 Foreground-Verarbeitung 13.1.2.1.2 Background-Verarbeitung 13.1.2.2 Batch-Verarbeitung 13.1.3 Die verschiedenen Betriebsformen 13.1.3.1 Normale Betriebszeiten 13.1.3.2 Erweiterte Betriebszeiten (erweiterte Verfügbarkeit) 13.1.3.3 24-Stunden-Betrieb (permanente Verfügbarkeit) 13.1.3.3.1 Zielsetzungen eines Multi-User-Betriebs 13.1.3.3.2 Ein Wort zur'Permanenz' . . 522, 524 525 526 526 527 527 529 530 534 535 538 543 544 544 545 546 546 547 549 550 550 551 551 552 553 554 554 555 557 559 559 560 562 564 566 566 567 568 569 572 572 573 574 575 577 577 578 578 579 580 582 583 ' 583 583 584 585 586 586 586 587 588 588 DB2 - Theorie und Praxis Inhaltsverzeichnis 10 13.1.4 13.2 v 13.3 Programm-Design-Uberlegungen 13.1.4.1 Programmübergreifende Maßnahmen 13.1.4.2 Der Einsatz von SQL: Möglichkeiten und Restriktionen Programmentwicklung unter DB2 13.2.1 Unterstützte Programmiersprachen 13.2.1.1 EXEC-SQL-Sprachschnittstelle 13.2.1.2 CLI-Sprachschnittstelle (Call Level Interface) 13.2.2 Erforderliche Entwicklungsschritte 13.2.2.1 DB2I: DCLGEN-Generierung 13.2.2.2 DB2-Precompiler 13.2.2.2.1 Aufgaben des Precompilers 13.2.2.2.2 Precompiler-Optionen 13.2.2.2.3 Standard-SQL 13.2.2.2.4 Modifikationen der Programm-Source durch den Precompiler 13.2.2.3 BIND-Prozeß 13.2.2.3.1 Aufgaben des BIND-Prozesses 13.2.2.3.2 Die verschiedenen BIND- und REBIND-Typen 13.2.2.3.3 Abgrenzung DBRM, Package und Plan 13.2.2.3.4 Die Verwaltung der Packages (BIND, REBIND, DROP, FREE) 13.2.2.3.5 DieZuordnung einer Package aus einem Programm heraus 13.2.2.3.6 Die Verwaltung der Pläne (BIND, REBIND, FREE) 13.2.2.3.7 Die Zuordnung eines Plans zu einem Programm 13.2.2.3.8 Dynamische Plan-Zuordnung im CICS 13.2.2.4 Linkage Editor 13.2.2.4.1 Aktivieren der Attach-Facility-Schnittstellen 13.2.3 Beispiel- und Hilfs-Programme: DSNTIAD, DSNTEP2 und DSNTIAUL 13.2.3.1 Übersicht 13.2.3.2 DSNTIAUL-Beispiel 13.2.3.3 DSNTEP2-Beispiel v SQL-Spracheinsatz in Anwendungsprogrammen 13.3.1 Übersicht der Sprachschnittstellen 13.3.2 13.3.3 589 589 591 594 594 594 594 595 596 597 597 598 601 603 604 604 605 607 608 610 611 613 614 615 615 616 616 617 618 619 619 13.3.1.1 Interactive SQL, Embedded SQL, CLI, Static SQL und Dynamic SQL 619 13.3.1.2 SQL-Statements und ihre Programm-Nutzung 620 13.3.1.3 EXEC-Level-Interface: Embedded SQL 621 622 13.3.1.4 Behandlung von Datenmengen 13.3.1.5 CLI: Call-Level-Interface 623 Grundstruktur eines'DB2-Programmes im EXEC-Level 625 13.3.2.1 Relevante Komponenten 625 13.3.2.2 Basis-Codier-Regeln für SQL-Statements 626 13.3.2.2.1 Allgemeine Regeln 626 13.3.2.2.2 Assembler-Besonderheiten 627 13.3.2.2.3 C-Besonderheiten 627 13.3.2.2.4 COBOL-Besonderheiten 628 13.3'2.2.5 PL/I-Besonderheiten 630 13.3.2.3 Definition der SQLCA (SQL Communication Area) 631 13.3.2.4 Tabellen-und View-Deklarationen 631 13.3.2.5 Host-Variablen und NULL-Indikatoren 632 13.3.2.5.1 Typen: Host-Variablen und Host-Strukturen 632 13.3.2.5.2 Einlesen von NULL-Markierungen 634 13.3.2.5.3 Setzen von NULL-Markierungen 636 13.3.2.5.4 Einsatzspektrum von Host-Variablen und Indikatoren 637 13.3.2.6 Unterstützte Datentypen 638 13.3.2.6.1 Konvertierungsregeln zwischen DB2-Spalten und Host-Variablen 639 13.3.2.7 Fehlerbehandlung 641 13.3.2.7.1 Überblick " 641 13.3.2.7.2 Returncode-Analyse 641 13.3.2.7.3 Auszug einiger relevanter SQLCODEs und SQLSTATEs 643 13.3.2.7.4 WHENEVER 644 13.3.2.7.5 DSNTIAR, DSNTIAC 644 13.3.2.7.6 Behandlung schwerer Fehler . " 645 Cursor-Konzept 646 13.3.3.1 Übersicht der Sprachmittel 646 13.3.3.2 Detaillierte Darstellung des Cursor-Befehlsspektrums " 649 13.3.3.2.1 Deklaration des Cursors: DECLARE CURSOR 649 13.3.3.2.2 Eröffnen des Cursors: OPEN 651 DB2 - Theorie und Praxis Inhaltsverzeichnis 13.4 13.5 13.6 13.7 13.3.3.2.3 Bereitstellen einzelner Zeilen der Result Table: FETCH 13.3.3.2.4 Positioned Update und Delete: WHERE CURRENT OF 13.3.3.2.5 Schließen des Cursors: CLOSE 13.3.3.3 Mengenverarbeitung auf Realtime-Daten: das ewige Rätsel 13.3.3.4 Ist die Result Table des Cursors read-only oder updateable? 13.3.3.5 Wird die Result Table materialisiert? 13.3.3.6 Einfluß des UOW-Konzepts auf die Cursor-Verarbeitung Besondere Programmier-Techniken unter DB2 13.4.1 Effiziente Bereitstellung einer Result Table 13.4.1.1 Relevante WHERE-und ORDER BY-Komponenten 13.4.1.2 Aufsetzen auf einen Composite Key 13.4.1.3 Regeln für das Aufsetzen 13.4.2 Online-Anwendungen 13.4.2.1 Online-Parallel-Update 13.4.2.2 Online-Browsing/Blättern 13.4.3 Batch-und Multi-User-Anwendungen • 13.4.3.1 Langlaufende oder ressourceintensive Anwendungen 13.4.3.2 Konsequenzen eines COMMIT-Einsatzes 13.4.3.3 Wann wird eine UOW beendet? 13.4.3.4 Wirkungen beim Abschluß einer UOR 13.4.3.5 Unterstützung von Rollback und Restart der Batch-Programme 13.4.3.6 Empfehlungen zum Design von Batch-Langläufern 13.4.4 Anwendungen in verteilten Datenbankumgebungen 13.4.4.1 Zugriffstypen und Protokolle 13.4.4.1.1 Anwendungs-und systemgesteuerter Zugriff 13.4.4.1.2 RUW und DUW . 13.4.4.1.3 Syntax-Anforderungen unterschiedlicher Systeme 13.4.4.2 Programmvorbereitungen, Pläne und Packages 13.4.4.3 SQL-Statement-Einsatz in Programmen \ 13.4.4.4 Performance- und Integritäts-Aspekte 13.4.5 Entwicklung und Einsatz von Stored Procedures 13.4.5.1 Adreßraum-Konzept 13.4.5.2 Ablauf und relevante Komponenten 13.4.5.3 Übergabe von Query Result Sets 13.4.5.4 Konventionen bei der Entwicklung 13.4.5.4.1 Entwicklungs-Komponenten 13.4.5.4.2 Programm-Konzept 13.4.5.4.3 Zuordnung von Plan und Packages 13.4.5.4.4 Parameter der Stored Procedure CAF - Call Attachment Facility 13.5.1 Vorteile der CAF-Nutzuhg I i 13.5.2 Entwicklung eines CAF.-Programms 13.5.3 Nutzbare Funktionen 13.5.3.1 Implizite Connection . 13.5.3.2 Explizite Connection 13.5.3.3 Generelle Ausprägungen einer CAF-Connection RRSAF - Recoverable Resource Manager Services Attachment Facility 13.6.1 Vorteile der RRSAF-Nutzung 13.6.2 Entwicklung eines RRSAF-Programms 13.6.3 Nutzbare Funktionen 13.6.3.1 Abschluß einer UOW Dynamic SQL 13.7.1 Abgrenzung zu Static SQL 13.7.2 Funktionsspektrum von Dynamic SQL 13.7.2.1 Manipulationen und Informationsanforderungen 13.7.2.2 Parameter Markers (?) 13.7.2.3 SQLDA - SQL Descriptor Area 13.7.3 Manipulationen (Non-SELECT) . 13.7.3.1 Feste Parameter 13.7.3.2 Variable Parameter 13.7.4 Informations-Anforderungen (SELECT) . 13.7.4.1 Feste Parameter: Fixed-List-SELECT 13.7.4.2 Variable Parameter: Varying-List-SELECT 11 651 652 652 653 655 656 658 660 660 661 662 663 664 \ 664 667 668 668 669" 670 671 672 673 674 674 674 675 675 676 677 679 681 681 682 684 685 687 688 689 690 692 692 692 693 694 694 694 695 695 695 696 696 697 697 698 698 699 700 701 701 703 704 704 704 DB2 - Theorie und Praxis Inhaltsverzeichnis 12 13.8 13.7.5 Statement Caching (KEEPDYNAMIC (YES)) 13.7.6 Resource Limit Facility (RLF) - DB2 Governor 13.7.7 Vor- und Nachteile von Dynamic SQL Programmier-Empfehlungen 708 709 710 711 14 SQL-Performance 14.1 14.2 714 Grundlagen der SQL-Performance 14.1.1 Einleitung, Ansätze der Optimierung 14.1.1.1 Leistungsbeeinflussende Faktoren 14.1.1.2 Optimierungs-Möglichkeiten und-Maßnahmen 14.1.2 Komponten der Datenbeschaffung . 14.1.2.1 Aufgabenteilung von RDS, DM und BM 14.1.2.2 Bufferpool-Hit Ratio und MUPA 14.1.3 DB2-Tools zur Unterstützung von Performance-Maßnahmen 14.1.3.1 Übersicht. 14.1.3.2 Statistikdaten des Katalogs 14.1.4 Die relevanten Zeiten einer Statement-Abwicklung 14.1.4.1 DB2-Accounting-Zeiten 14.1.5 Parallel-Verarbeitung 14.1.5.1 Parallel-Verarbeitungs-Typen 14.1.5.2 Query-Typ: CPU bound oder I/O bound 14.1.5.3 Effekte der Parallel-Verarbeitung 14.1.5.4 Voraussetzungen für die Parallel-Verarbeitung 14.1.5.5 Restriktionen bei der Nutzung der Parallel-Verarbeitung Zugriffspfadanalyse des DB2-Optimizers ' 14.2.1 14.2.2 14.2.3 Aufgaben des Optimizers Parsing Optimization . 727. 728 729 v 14.2.3.1 14.2.4 14.3 Prädikate 14.2.3.1.1 Bedingte Verarbeitungsanweisungen (Prädikate) 14.2.3.1.2 Prädikat-Kategorien 14.2.3.2 Filterung • 14.2.3.2.1 Inhaltliche Verteilung von Datenwerten 14.2.3.2.2 Filter-Faktor (FF) 14.2.3.3 STAGE1, STAGE2 und INDEXABLE 14.2.3.3.1 Indexable Prädikate 14.2.3.3.2 Komplexe Prädikatvorgaben 14.2.3.3.3 Reihenfolge der Prädikat-Bewertung 14.2.3.4 Aufwands-Kalkulation der SQL-Anforderung 14.2.3.4.1 Prozeß-Kostenschätzung 14.2.3.4.2 Auswahl des Zugriffspfades 14.2.3.4.3 lO-Kostenermittlung . 14.2.3.4.4 Timeron IBM-Zugriffspfad-Formeln (Auszug) • 14.2.4.1 Lesende Zugriffe 14.2.4.2 Schreibende Zugriffe 729 729 729 730 731 731 735 737 738 739 740 740 740 741 742 743 744 745 DB2-Zugriffspfade auf die Daten 14.3.1 Analysemöglichkeit der Zugriffspfade 746 746 14.3.1.1 14.3.1.2 14.3.2 14.3.3 Rahmenbedingungen EXPLAIN und PLAN_TABLE 14.3.1.2.1 Einsatz von Host-Variablen beim EXPLAIN I/O-Zugriffs-Typen 14.3.2.1 Sequential Prefetch 14.3.2.2 List Prefetch Einfache Zugriffspfade ' 14.3.3.1 Tablespace Scan (File Page Set Scan) 14.3.3.2 Index-Zugriffe 14.3.3.2.1 Matching Index Scan 14.3.3.2.2 Non-Matching Index Scan 14.3.3.2.3 Equal Unique Index Access 14.3.3.2.4 IN-List Index.Scan 14.3.3.2.5 One-Fetch Access 14.3.3.2.6 Index-Only Access 14.3.3.2.7 Multiple Index Access 714 714 714 715 717 717 719 720 720 721 722 722 724 724 724 724 725 726 727 _ , , 746 747 748 749 750. 751 753 755 756 756 757 758 759 760 761 762 DB2 - Theorie und Praxis Inhaltsverzeichnis 14.3.4 14.4 Komplexe Zugriffspfade 14.3.4.1 Join / 14.3.4.1.1 Composite Table und New Table, Outer Table und Inner Table 14.3.4.1.2 Ausweis von Jbins in der PLAN_TABLE 14.3.4.1.3 Nested Loop Join 14.3.4.1.4 Mefge Scan Join 14.3.4.1.5 Hybrid Join 14.3.4.2 UNION 14.3.4.3 Nested Table Expression 14.3.4.4 Subquery 14.3.4.4.1 Non-correlated Subquery 14.3.4.4.2 Correlated Subquery 14.3.4.5 Sortierung 14.3.4.6 Parallelverarbeitung 14.3.4.7 Materialisierung 14.3.5 Beeinflussung der Zugriffspfadentscheidungen 14.3.5.1 Statement-Modifikationen durch den Optimizer 14.3.5.2 Möglichkeiten für Anwendungsentwickler 14.3.5.2.1 Veränderung von Objekt-Strukturen 14.3.5.2.2 Manipulation der Statistiken 14.3.5.2.3 Umschreiben von SQL-Statements 14.3.5.2.4 OPTIMIZE FOR n ROWS 14.3.5.2.5 Die Wirkungen von Host-Variablen beim BIND . Zusammenfassung der relevanten Performance-Komponenten 14.4.1 DB2-interne Automatismen 14.4.1.1 Zugriffspfad-Effizienz . 14.4.1.2 Mögliche Zugriffspfade 14.4.2 Systemgenerierungs- und Installations-Optionen v 14.4.3 Objekt-Definitionen 14.4.4 Anwendungs-Design und-Programmierung 14.4.4.1 SQL-Query-Empfehlungen 14.4.4.2 Was tun bei langlaufenden Statements? 13 763 764 764 765 767 770 772 774 775 776 777 779 781 782 783 784 784 785 785 788 789 791 792 793 794 794 795 796 798 800 802 803