(*) IBM DB2 V9 for LUW. DB2 Performance & Tuning. (*) ist eingetragenes Warenzeichen der IBM International Business Machines Inc.

Größe: px
Ab Seite anzeigen:

Download "(*) IBM DB2 V9 for LUW. DB2 Performance & Tuning. (*) ist eingetragenes Warenzeichen der IBM International Business Machines Inc."

Transkript

1 (*) IBM DB2 V9 for LUW DB2 Performance & Tuning (*) ist eingetragenes Warenzeichen der IBM International Business Machines Inc. 1

2 DB2 for LUW Performance & (SQL) Tuning Kapitelinhalt Best Practices in einem DWH Umfeld BP - Database Design BP Überlegungen zu Applikationen BP Performance Layer BP - Configuration and Operations DB Design und Objektdefinitionen Denormalisierungsmuster Physisches Design und Datentypen bei DB2 Index Designmuster SQL Tuning Query Design Optimization class und Optimizer SQL EXPLAINs SQL runtime optimization (MQT s, temp Tables, SORTs) Beeinflussen des access plan bei DB2 Zugriffsarten bei DB2 Regeln zu Tabellen- und Index-Design 2

3 DB2 for LUW Tuningpotentiale 2 = DB2 System (10%) 3 = phys. DB-Design Design (20%) 4 = Anwendung (60%) = OS System (10%) 3

4 DB2 for LUW BP in einem DWH Umfeld DWH Eigenschaften: Große Datenmengen Millionen/Billionen rows auf bestimmten Tabellen Grosse Datenmengen werden rolled-in und rolled-out Komplexe Queries Grosse Joins Riesige Sorts, Große Anzahl von Aggregationen Viele involvierte Tabellen Ad Hoc Queries Dabei ist es wichtig STÄNDIG auf die Performance zu achten Ziele: Vorgabe von Empfehlungen, um die data warehouse query performance hoch zu halten (1) Empfehlungen zum Database Design (2) Empfehlungen zum Application Design (3) Empfehlungen zu den Performance Layers (4) Empfehlungen zu ständigen Tuningaktivitäten 4

5 DB2 for LUW Performance & (SQL) Tuning Kapitelinhalt Best Practices in einem DWH Umfeld BP - Database Design BP Überlegungen zu Applikationen BP Performance Layer BP - Configuration and Operations DB Design und Objektdefinitionen Denormalisierungsmuster Physisches Design und Datentypen bei DB2 Index Designmuster SQL Tuning Query Design Optimization class und Optimizer SQL EXPLAINs SQL runtime optimization (MQT s, temp Tables, SORTs) Beeinflussen des access plan bei DB2 Zugriffsarten bei DB2 Regeln zu Tabellen- und Index-Design 5

6 DB2 for LUW BP in einem DWH Umfeld Best Practices Parallelism Database partition feature (DPF) wird empfohlen (1) Um Parallelität in DWH Umgebungen zu erreichen (2) Um die Skalierbarkeit des Systems und die Query Performance zu verbessern SMP (Intra-Query Parallelism) ist nicht zu empfehlen (1) In konkurrierenden multi-user environments mit hohem CPU Verbrauch SMP Empfehlung (1) Wenn die CPUs unterbeschäftigt ist (2) Wenn DPF nicht in Frage kommt Partitioning (als ergänzende Strategie in DB2) Database Partitioning (DPF) DISTRIBUTE BY HASH Vorteil: Bessere Skalierbarkeit und Performance durch Parallelverarbeitung Multidimensional Clustering (MDC) ORGANIZE BY DIMENSION Vorteil: Bessere Query Performance durch data clustering Table (Range) Partitioning PARTITION BY RANGE / Table Partitioning Vorteil: Besseres Datenmanagement ( roll-in und roll-out von Daten) UNION ALL Views Vorteil: Unabhängige Optimierung bei mandantenfähigen Daten 6

7 DB2 for LUW BP in einem DWH Umfeld Divide et impera! Distribute, Partition, Organize! 7

8 DB2 for LUW BP in einem DWH Umfeld Best Practices Database Partitioning Man sollte die fact - und die größte dimension Table entsprechend anordnen Die Auswahl erfolgt so, dass signifikante Überschneidungen auf den Partitions vermieden werden Vermeiden von DATE dimension, für aktive Transaktionen, die wegen current date alle auf dieselbe database partition zeigen müssten (TIMESTAMP ist OK) Möglichkeiten der Isolation von workload bei data marts Unterschiedliche «partition groups», aber gemeinsame «dimension tables» replicated tables (Mehr später ) Best Practices Table Partitioning Empfehlung: partitioning der fact tables Typischerweise auf der Basis der DATE Dimension Funktioniert besser mit application key predicates, die direkt angewendet werden Table - oder Range Partitioning Empfehlung: table - / range partitioning (V9.7 : auch partitioned indexes ) Wahl des partitioning nach der roll-in / roll-out Granularität UNION ALL Views Jeder Ableger kann unabhängig optimiert werden Nutzung nur mit gut designten Applicktionen (Gefahr der materialization ) Große Mengen von Ablegern brauchen Zeit und Speicher beim Optimieren Benötigen Prädikate mit Konstanten zur Eliminierung von Ablegern 8

9 DB2 for LUW BP in einem DWH Umfeld Best Practices Multidimensional Clustering (MDC) Empfehlung: Definition von MDC auf der fact table Garantiertes clustering (Also: Vermeidung von REORG wegen des clustering ) I/O Optimierung Kompakte Indexes (in Koexistenz mit den regular indexes ) Auswahl der dimensions auf der Basis von query predicates Empfehlung: 1 bis 4 dimensions Die dimensions sollten so gewählt sein, dass sie möglichst wenig Speicher vergeuden Mögliche Wahl einer feineren Granularität der Table partitioning range : Beispiel: Table Partition range by MONAT, MDC über DATUM 9

10 DB2 for LUW BP in einem DWH Umfeld 10

11 DB2 for LUW BP in einem DWH Umfeld Best Practices (physical) Schema Surrogate Keys Soweit möglich sollten die keys aus den Applikationen direkt verwendet werden Ermöglicht die Anwendung/den Transfer der Prädikate direkt auf die fact table DATE ist ein guter Kandidat (einfach für roll-in / roll-out und für MDC ) Star Schema / Snowflakes Separieren der tables pro dimension hierarchy ( snowflake ) kann in einer großen Zahl JOINs resultieren Das Zusammenlegen von dimensions kann zu hoher Redundanz führen ( space ) Definiere NOT NULL wenn möglich: Viele Optimierungen basieren auf NOT NULL Feldern Definiere Eindeutigkeit, wenn möglich: «Primary Keys» / «Unique Constraints» / «Unique Indexes» Compression (auf der fact table und wenn nicht CPU-bound ) Table, Index und Temp Table Kompression Große Vorteile im Einsparen von Speicherplatz Bei Tabellen- und TEMP Kompression 30-70% Bei Index Kompression 30-40% Performance Gewinne, da weniger I/O und effizientere Nutzung der Bufferpools TEMP table compression hilft bei Verarbeitungen wie Hash Join, Merge Join, Sorts und Table Queues, die überlaufen können 11

12 DB2 for LUW Partitionieren bei DWHs Best Practices bei Applikationen Nutzen von Konstanten anstatt von expressions in einer Query Beispiel:. WHERE DateCol <= CURRENT DATE 5 Nutz man VALUES(CURRENT DATE 5) so erhält man erst die Konstante und kann sie dann in der Query verwenden Vermeiden von expressions auf indizierten Spalten Beispiel:. WHERE DATECOL 2 DAYS > WHERE DATECOL > DAYS Vermischen von Datentypen in JOIN (oder auch anderen) Prädikaten Beispiel:.WHERE IntegerCol = DecimalCol Nutzen von Global Temporary Tables, um eine Query aufzuteilen, falls sie mehr als Tables anspricht Reduziert die Optimierungszeit Später noch mehr davon. 12

13 DB2 for LUW Partitionieren bei DWHs Best Practices Performance Layer Indexes Statistiken Distribution Statistics Column Group Statistics Statistical Views Constraints Referential Integrity Materialized Query Tables (MQT s Replicated Tables Indexes Indexes sind ein vertikales subset der Tabellendaten Indexes sind immer in einer bestimmten Reihenfolge(ORDER: ASC, DESC) sortiert Indexes ermöglichen clustered Zugriffe auf eine Tabelle 13

14 DB2 for LUW Partitionieren bei DWHs Index Überlegungen Index Only Access anstatt teuerer ISCANFETCH oder TSCAN (Table Scan) Vermeiden von SORTs - besonders die grossen SORTs index-oring und index-anding, Star Joins Bei range join predicates : Nested Loop Join bietet mehr Möglichkeiten Indexes for clustering (MDC) Schätzen der Kardinalitäten Schätzen der Größe von Zwischenresultaten, die für gute execution plans kritisch sind Bei ungenügender Information kann der Optimizer nur auf der Basis von Annahmen schätzen Bei Ungleichverteilung und statistical correlation zwischen mehreren Spaltenwerten, entsteht Unsicherheit bezüglich der Statistiken Man achte auf DATE Spalten Best Practices - Statistics Sammeln von distribution Statistics bei Ungleichverteilung und Prädikaten mit Konstanten Sammeln einer großen Anzahl von quantile statistics auf Spalten mit DATE range predicates und character string Spalten Column Group Statistics Beispiel: COUNTRY = Germany And CITY = Frankfurt No CGS: Selectivity = ½ * 1/3 = 1/6 Estimate 1 row With CGS: Selectivity = 1/3 Estimate 2 rows 14

15 DB2 for LUW Partitionieren bei DWHs Best Practices - Statistics Problemscenario: rows CUST Table :100 rows, 100 custids Frequency Statistics SALES Table SELECT WHERE FROM SALES, CUST CUST.CNAME = IBM AND CUST.CUSTID = SALES.CUSTID Cardinality - Schätzung mit Gleichverteilung = 100,000 Aktuelle Kardinalität : 2,000,000!!!!!!!!!!!!!!!!!!!! 15

16 DB2 for LUW Partitionieren bei DWHs Best Practices - Statistics Sammeln von Column Group Statistics bei mehreren gleichwertigen Prädikaten auf derselben Tabelle:.WHERE Country = CANADA and City = TORONTO RUNSTATS ON ALL COLUMNS AND ON COLUMNS ((country, city) ) Man denke an Statistical Views wenn Die JOIN Spalte ungleich verteilte Werte aufweist Es signifikante Unterschiede in der range of values in fact und dimension Table gibt CREATE VIEW SV1 AS (SELECT C.* FROM CUST C, FACT F ALTER VIEW cust_fact ENABLE QUERY OPTIMIZATION WHERE C.CUST_ID = F.CUST_ID) RUNSTATS ON TABLE dba.cust_fact WITH DISTRIBUTION Referential Integrity (RI) Unterstützt den sogen. Prozess des aggregation push down (Beispiel später.) Eliminiert redundante Joins in Views RI hilft bei der Entscheidung, ob Daten von der primary key table gebraucht, aber nicht gejoined werden müssen, auch wenn sie Bestandteil des View sind Hilft beim Materialized Query Table matching Ermöglicht Queries den match einer MQTs mit mehreren dimension table Joins 16

17 DB2 for LUW Partitionieren bei DWHs Materialized Query Tables (MQTs) 17

18 DB2 for LUW Partitionieren bei DWHs Best Practises Definieren von Materialized Query Tables (MQTs) Welche MQTs sollten definiert werden? Schätzen der Größe der MQTs über COUNT Queries gegen die base tables mindestens die 10X Reduktion in der Größe zwischen fact table und MQT sollte erreicht werden Aufbau der MQTs mit einer sinnvollen Zahl von GROUP BY Spalten (3 bis 6 dimension keys ) auf eine Zeitachse bezogen Soweit möglich sollte die MQT ausschließlich aus der fact table gebildet werden Man setze dann Table Partitioning für die fact table und die MQTs ein Best Practices - MQT Matching Definition von Referential Integrity, zur Unterstützung entsprechender MQTs, die mehr Tabellen als Queries enthalten Definition von funktionalen Abhängigkeiten in kleineren MQTs Nutzen von COUNT_BIG anstatt von COUNT bei DPF MQTs Definiton von Indexes auf MQTs Statistiken sollten immer up-to-date sein Definition der base table Spalten mit NOT NULL soweit irgendwie möglich Beispiel: SUM(A + B) kann substituiert werden mit SUM(A) + SUM(B) 18

19 DB2 for LUW Partitionieren bei DWHs Best Practises MQT Maintenance REFRESH IMMEDIATE Create eines IX auf GROUP BY Spalten Create eines IX auf Spalten, die einen unique key ergeben up-to-date halten der Statistiken für base table und MQT s REFRESH DEFERRED Wenn der log space ein Thema sein sollte, sollte NOT LOGGED INITIALLY oder LOAD über cursor erfolgen Eine MQT kann temporär in eine regular table umgeschaltet werden (1) ALTER TABLE DROP MATERIALIZED QUERY (2) ALTER TABLE ADD MATERIALIZED QUERY Einsatz von ATTACH / DETACH, wenn die fact table und MQT range partitioned sind Replicated Tables Replikation der dimension tables (außer bei Kollokation mit fact ) Benefit : Verhindert das Verschieben von Daten Wichtig : Definition passender IX Wenn zu riesig, Replikation eines subset of frequently used columns 19

20 DB2 for LUW Partitionieren bei DWHs Best Practices - Statistics Der DB2 Query Optimizer verläßt sich auf genaue Statistiken und erzeugt nur dann gute query plans User nutzen RUNSTATS wenn sich die Daten ändern (Teil von ETL) Erzeugen von Statistiken (weniger zuverlässig) DB2 hält UPDATE / DELETE / INSERT counters Diese Aufzeichnungen sind limitiert auf einige wenige Statistiken und damit nicht genug Konfiguration mit Automatic Statistics Automatisches Sammeln der tabellenstatistiken nach Bedarf Läuft im background als low priority job Konfiguration mit Real Time Statistics: sammelt Statistiken on-the-fly Best Practises Konfiguration Optimization Level 5 Registry Variable DB2_ANTIJOIN=EXTEND: bei langsamen Queries mit NOT EXISTS, NOT IN Prädikaten DB2_REDUCED_OPTIMIZATION=YES: Falls die Compile Zeit wichtig ist Basisregeln für die Konfiguration BUFFPOOL ~= SHEAPTHRES SORTHEAP ~= SHEAPTHRES/(# of concurrent SORT, HSJN) 20

21 DB2 for LUW SQL Tuning & Monitoring Kapitelinhalt Best Practices in einem DWH Umfeld BP - Database Design BP Überlegungen zu Applikationen BP Performance Layer BP - Configuration and Operations DB Design und Objektdefinitionen Denormalisierungsmuster Physisches Design und Datentypen bei DB2 Index Designmuster SQL Tuning Query Design Optimization class und Optimizer SQL EXPLAINs SQL runtime optimization (MQT s, temp Tables, SORTs) Beeinflussen des access plan bei DB2 Zugriffsarten bei DB2 Regeln zu Tabellen- und Index-Design 21

22 DB2 for LUW Design und Objektdefinition Das Vorgehen bei der vollständigen Informationsanalyse Funk- tions- Analyse Informa- tions- Analyse abgestimmtes Informations- Modell Phys. DB-Design Abstimmung Kanonische Synthese Funk- tions- Modell Elem.- Funktion Informa- tions- Modell Datensichten und "dataflow"- Modell 22

23 DB2 for LUW Design und Objektdefinition Das Vorgehen beim physischen (systemspezifische) Design für DB2 (1) Der physische Design-Prozess unter Technischen Aspekten Performance-Gesichtspunkten (2) STORAGE Parameter ( automatic, on demand, SMS, DMS.) Entity Relatonship modelling (problemorientiert) Normalisierung (datenorientiert) Größen, Typen Bufferpools storage layout conceptual modelling (logisch orientert) (3) DB2 Objekte DATABASE(S) TABLESPACES TABLES INDEXES VIEWS / MQTs / andere Objekte (4) DDL und Implementierung Composite logical modelling (optimiert) Physical modelling (DBMS- / zugriffsorientert) 23

24 DB2 for LUW Design und Objektdefinition Das Vorgehen beim physischen (systemspezifische) Design für DB2 Die Schritte 1. Überführung der "entities" Übernahme von Satztypen Trennen von Satztypen Zusammenlegen von Satztypen Ergänzen von Entities (um Kennzeichen, Marker ) 2. Überführen der Beziehungen Behandlung von 1 : 1 "relationships" Behandlung von 1 : n Beziehungen / Definition von foreign keys Implementieren von Beziehungsregeln ( RI, constraints ) 3. Einrichten der Zugriffspfade Behandlung der Einstiegspunkte Auswahl der physischen Zugriffspfade 4. Festlegen der DBMS-spezifischen Parameter Blockgröße / Satzgröße Speicherplatzgröße / Speicherplatzorganisation physische Speicherungsfolge Beachten organisatorischer Einflüsse (DBA) usw. 5. Integration in das bestehende PDM 24

25 DB2 for LUW Design und Objektdefinition Das Vorgehen beim physischen (systemspezifische) Design für DB2 Beispiel 1. Satztypen zusammenlegen Bei einer 1:n - Beziehung ist eine Zusammenlegung von Satztypen nur sinvoll, wenn der n-satztyp ISOLIERT im Informationsmodell steht! 2. Denormalisierung Denormalisierte Strukturen helfen insbesondere bei relationalen DBMS JOIN-Operationen zu minimieren und so die Performance in bestimmten Bereichen (beim LESEN) zu steigern. Beispiel: KUNDE ( KD-NR, KD-Name, KD-PLZ, KD-ORT, KD-Strasse,.) normalisiert: KUNDE ( KD-NR, KD-Name, KD-OKZ, KD-Strasse... ) ORTE ( OKZ, O-PLZ, O-ORT... ) Anmerkung: Das Beispiel ist hier natürlich nicht vollständig, da es eine PLZ für mehr als einen Ort geben kann und ebenfalls ein Strassennamen in mehr als einem Ort vergeben sein kann Als Voraussetzung für denormalisierte Strukturen sollte gelten: Der Änderungsaufwand der Redundanzen ist überschaubar - Die Änderungshäufigkeit ist gering!! ACHTUNG: Bei jeder Denormalisierung entstehen Redundanzen, die GEPFLEGT werden müssen, um die DB-Inhalte KONSISTENT zu halten! 25

26 DB2 for LUW Design und Objektdefinition Das Vorgehen beim physischen (systemspezifische) Design für DB2 Die Zugriffspfade Beziehungen werden über Schlüsselredundanzen realisiert: "primary key" "foreign key" Es ist dabei wichtig zu wissen, ob nur eine oder BEIDE Richtungen der Beziehungen benötigt werden. 2. Denormalisierung Beachte: Bei konkurrierenden Einstiegspunkten sollte der Index gewählt werden, der möglichst "hochwertig" ist: 1. "cluster index" 2. "primary key" oder "unique index" 3. "normaler" Index ( duplicates ) Wird der Datenbestand sehr häufig erweitert (INSERT ) oder verringert (DELETE), so sollten im Sinne der Performance möglichst SELEKTIVE, aber WENIGE Indizes auf den Tabellen liegen. 26

27 DB2 for LUW Design und Objektdefinition Das Vorgehen beim physischen (systemspezifische) Design für DB2 Die Physik 1. Berechnen der Speicher-Größen "primary space" / "secondary space Bestimmung Bestimmen zusammengehöriger Tabellen für EINEN/MEHRERE TS(?) Bestimmen des TS-Typs (MDC, PTS, normaler TS) Festlegen der Größe und des Füllgrades der Pages (4K, 8K, 16K, 32K, PCTFREE, FREEPAGE) Zuordnung zu file systems / containers etc. LOCKSIZE Festlegung 2. Festlegen der (DB2-)Datentypen in den Tabellen Wenn möglich numerische Felder VOR Feldern mit anderen Datentypen wenige NULL-Felder eher NOT NULL WITH DEFAULT keine LONGVARCHAR / VARCHAR / LOB Felder (wegen IX Nutzung) Lassen Sie die Finger von ineffizienten Datentypen wie: GRAPHIC und VARGRAPHIC Anordnung der Spalten in der Tabelle (VARCHAR und NULL-Felder ans Ende der Tabelle, usw.) Definition von RI-Bedingungen ( falls nötig ) und constraints (nach Domänen etc.) Festlegen der "views / ALIASE / SYNOMYMs 3. Definition der DB2-Datenbanken nach organisatorisch / administrativen Gesichtspunkten nach Datenverfügbarkeitsanforderungen ( mit Hilfe der Datenbankadministration! ) Testdatenbanken sind NIE oder nur SELTEN gleich der PROD-Datenbank!! 27

28 DB2 for LUW Index-Design Warum sind Indizes so wichtig? Eine gute Strategie für Indizierung ist der Schlüssel No 1 für gute Performance IXe reduzieren die I/O-Aufwände dramatisch. IXe reduzieren den CPU Verbrauch. IXe reduzieren die Elapsed Time für Queries. Weitere vorrangige Aufgaben von Indexen? Primary keys sichern Eindeutigkeit der Daten ab.("primary keys" "Entity Integrity ) Clustering bestimmt die physische Reihenfolge bei der Speicherung der Daten Partitionierung erlaubt die Aufteilung von (grossen)datenmengen IX begrenzen die Suche nach bestimmten Wertemengen IX begrenzen die Anzahl physischer Platten-I/O s und verbessern die Datenzugriffe (bei sequentiellem Lesen, SORT, paralleler Verarbeitung usw.) 28

29 DB2 for LUW Index-Design Indexorganisation Root-Page Indexpages (Indexspace) nonleaf-pages * * 08 * * 17 * * 25 * * 33 * * 40 * * 61 * * 86 Pointer auf die Datensätze Leaf-Page Datenpages (Tablespace) 29

30 DB2 for LUW Index-Design Die IX-Struktur im Detail Index leaf pages besitzen für jeden indizierten Wert einer Spalte diesen WERT, gefolgt von einem oder mehreren RID(s) ( Record Identifier ) Die RID ist nichts anderes als ein 4 Byte Pointer auf die Datenpage, die die indizierte row enthält (5 Bytes für einen partitioned tablespace > 64 GB und <= 16 TB) 3 Bytes für die sogen. Page Location 1 Byte für den page directory Eintrag - das offset der row in der Page Besteht der Index aus 3 Ebenen So enthalten die Non-leaf pages über den leaf pages die höchsten Werte der jeweiligen darunter liegenden leaf page mit den Pointers zu diesen leaf pages Bei IX > 3 Levels So enthalten die Nonleaf pages über den leaf pages die höchsten Werte der jeweiligen darunter liegenden leaf page mit dem Pointers zu diesen leaf pages Nonleaf pages oberhalb der 1.en Ebene der nonleaf pages enthalten die höchsten range -Werte für jede nonleaf page gefolgt von den Pointers auf die nächst-niedrigeren nonleaf pages kein architekturbezogenes Limit für die Anzahl von nonleaf Ebenen in einem IX-Baum Die root page verkörpert die oberste Ebene des Index-Baums 3 Byte pagenum 1 Byte slotnum X: 053ED4 : 29 Enthält den höchsten Wert jeder unterliegenden nonleaf page range mit Pointern auf das erste Level der nonleaf pages oder auch der leaf pages (bei einem IX über 2 Ebenen) 30

31 DB2 for LUW Index-Design Die IX-Struktur im Detail SYSIBM.SYSINDEXES enthält die Anzahl der Levels Ein I/O ist auf jeder Ebene eines Index Trees erforderlich Getpage und I/O sind optional für jede Ebene notwendig (IX-Lookaside) getpage alleine ist erforderlich, wenn die IX Page nach dem ersten I/O im Bufferpool steht Hier ein Beispiel eines IX auf eine 10 Byte lange Spalte - es interessiert die Anzahl von Type 2 Index Levels, die benötigt werden, um eine bestimmte Anzahl rows zu referenzieren Ein 2 Level Index besteht aus einer root page und zugehörigen leaf pages Ca. 45,000 unique IX Werte inkl. RIDs können in einem 2 level index Platz finden Ein 3 Level Index besteht aus root page, 1 Level nonleaf pages und leaf pages Ca. 9,850,000 unique IX Werte inkl. RIDs können in einem 3 level index Platz finden «Nonunique indexes» erfordern weniger «index pages» Indizierte Werte müssen müssen für Duplikate nicht wiederholt werden non-leaf page dup IX KEY 1 RID 1 RID 2 Flagbyte Flagbyte RID n KEY 2 Flagbyte KEY- Header 31

32 DB2 for LUW Index-Design Die IX-Struktur Probleme mit unbalanced IX Trees Ein Index Tree wird dann unbalanced, wenn viele INSERTS entlang einem bestimmten Pfad erfolgen Es müssen dann zusätzliche I/Os entlang dem unbalanced path erfolgen, und wenn das auf einem möglichst intensiv genutzten Pfad erfolgt, führt das zu erheblichen Performance-Problemen Methoden, einen balanced index tree zu pflegen 10 % percentage free space für die Hinzufügung von index entries gilt als default Ist der free space in der IX Page voll, so erfolgt Ein page split : die Hälfte der IX-Werte (auch mehr/weniger) werden jeweils auf 2 Index Pages aufgeteilt Ausnahme: die letzte leaf page eines type 2 Index Die übergeordnete Page hat nun einen Pointer auf 2 untergeordnete Pages Ist kein free space für den extra pointer mehr vorhanden erfolgt ein page split der non-leafpage Dieser Prozess wird fortgeführt, bis die root page erreicht wird Ist auch in der root page kein Platz mehr, geschieht folgendes Die root page wird gesplittet, eine neue root page erzeugt, mit dem Ergebnis N+1 Levels Ein REORG wäre jetzt oder ZEITNAH sehr zu empfehlen!!!! Werden alle Daten in einer leaf - bzw. nonleaf page gelöscht, so wird DB2 versuchen die Page aus dem IX Tree zu entfernen (ansonsten pseudo-deletes ) 32

33 DB2 for LUW Index-Design Die wichtigsten Indexarten für DB2 PRIMARY KEY IX eindeutige Indexwerte, die den eindeutigen Identifikator der Tabelle repräsentieren UNIQUE IX alle IX, die nur eindeutige Indexwerte zulassen (!) CLUSTERING IX der IX, der die physische Reihenfolge der Daten festegt Normal / duplicate IX Zugriffsreihenfolgen in IX-Sequenz sind möglich non-partitioning / partitioning IX zum Aufteilen der Daten (physisch (DPSI / NPSI)) Auf eine Tabelle können mehrere Indizes gelegt sein, aber nur ein "clustered" Index. Wie bei einer Tabelle, kann für IXe ein eigener der "tablespace" zur Verfügung gestellt werden. Für UNIQUE und PK-Indexe können weitere Felder mit INCLUDE angefügt werden. So sieht eine typische DDL für (non-partitioned, not clustered) Indexe aus: CREATE UNIQUE INDEX mytab.uxemp2 ON mytab.emp ( emp ASC, workdept ASC ) NOT PARTITIONED IN index_tsp ; 33

34 DB2 for LUW Index-Design clustering Indexes(allgemein) DB2 versucht die Daten in den Pages in der Reihenfolge des "clustering index" zu speichern. Dieser Index muß nicht unbedingt "unique" sein. Tabelle Grundsätzlich optimiert ein "clustering index" die Performance eines SQL-Statements, das eine Untermenge einer Tabelle in der vom "clustering index" vorgegebenen Folge zuzugreifen versucht. Index auf C1, C2 (clustering) Index auf C3 (non-clustering) Insbesondere bei der Verwendung von "range" - Prädikaten ( BETWEEN, >,. ) auf den IX-Spalten ORDER BY, GROUP BY in der Sequenz der Index-Spalten. Dies reduziert die I/O's. "prefetch"-mechanismen (sequential- und list-prefetch) Für die Definition eines "clustering index" sind folgende Kriterien wichtig: 1. Der "clustering index" spiegelt die Folge der Daten wieder, wie sie in (Batch-)Prozessen benötigt werden. Dies ist besonders bei großen Tabellen effizient. 2. Viele Anwendungen werden von einem "clustering index" nicht beeinflusst. Sie greifen oft auf kleine Datenmengen zu. Ausnahme bilden Such-Anwendungen, die Sortieren oder "prefetch" I/O's vermeiden sollen Sollten die genannten Kriterien in der betrachteten DB2-Umgebung keine Rolle spielen, wählt man einen Index der dem INSERT-Algorithmus folgt. Dies minimiert die Disorganisation der Tabelle. Hat man häufige Join's vor kann auch ein "foreign key" als "clustering key" gewählt werden, um den Join effizienter werden zu lassen. 34

35 DB2 for LUW Index-Design CIX Auswirkungen von PCTFREE und REORG Der "clustering index" muss hinsichtlich seines Einflusses auf folgende Parameter überwacht werden: "free space" INSERT Sequenz Reorganisationshäufigkeit Es gibt einen Zusammenhang zwischen dem freigelassenen Platz und der Reorganisationshäufigkeit: 1. Paßt die INSERT-Folge auf den "clustering index" (bei aufeinanderfolgenden aufsteigenden INSERT's beispielsweise), so kann ein REORG der Tabelle gänzlich überflüssig sein. In diesem Fall sollte PCTFREE = 0 gesetzt werden. 2. Paßt die INSERT-Folge NICHT auf den "clustering index", so sollte für alle Pages der Tabelle Freiplatz vorgesehen werden. In diesem Fall sollte der PCTFREE-Parameter passend zum Tabellenwachstum und zur REORG-Frequenz gewählt werden. CIX Auswirkungen auf asynchrone I/O s DB2 nutzt asynchrone I/O's zum Lesen von der Platte immer dann, wenn es einen Anhaltspunkt für sequentielles Lesen entdeckt; d.h. wenn "ranges" gelesen werden, die der physischen Folge der Daten entsprechen. DB2 versucht außerdem die Daten IMMER in "cluster"-sequenz zu speichern: Alle Zugriffe, die dieser Sequenz folgen, können grundsätzlich von asynchronen I/O's profitieren. Diese Sequenz sollte als Anhaltspunkt für einen "clustering index" auf dem Datenbestand dienen können. 35

36 DB2 for LUW Index-Design CIX und MDC Wann WAS? MDC bietet einen großen Vorteil gegenüber einem clustering index : Das clustering ist garantiert und automatisch. Im allgemeinen kann man mit MDC cluster ratios von 93%-100% erreichen. Das hängt von der erforderlichen coarsification ab. Im Gegensatz dazu, können clustering indexes die Daten nahe an der 100% Grenze clustern anfangs. Später werden die Daten über die Zeit mehr und mehr declustered. So braucht man zeitaufwändige REORGs, um die Daten wieder in Ordnung zu bringen. Generell sollte man MDC einsetzen, um das data clustering zu verwalten, AUSSER:. MDC erfordert coarsification und kann keine generierten Spalten in die Tabelle einfügen Die MDC Version der Tabelle resultiert in einem Wachstum, das man nicht akzeptieren kann oder will. Gut designte MDC Tabellen sind typischerweise 2-15% größer als non-mdc tables. Man findet, dass MDC clustering wegen coarsification eine geringere cluster ratio bietet, z.b. 93%, man will den periodischen REORG vermeiden, aber trotzdem das bessere clustering haben(cix). Folgende MDC design best practices : Die Auswahl der MDC Kandidaten erfolgt über columns, die in Prädikaten für Gleichheit/Ungleichheit, ranges und Sortieren verwendet werden. Um das Daten- roll-in zu verbessern, muss die Dimension der roll-in range folgen. Man bemühe sich um Masse! Für jede existierende Zelle wird ein extent zugewiesen ohne Rücksicht auf die row -Menge in der Zelle. Um MDC mit optimaler Platzausnutzung einzusetzen. muss man auf dicht gefüllte Blöcke achten Man beschränke die Anzahl der Zellen in einem MDC Design. Es gibt Ausnahmen bei denen sich die Größe der Datenmenge verdoppelt und dies trotzdem sinnvoll ist das ist aber eher selten 36

37 DB2 for LUW Index-Design CIX und MDC Wann WAS? Anmerkung: Block Indexe sind normalerweise einen kleinen Prozentsatz so groß, wie der zugehörige TS, und meistens kann man den benötigten Speicherplatz dafür vergessen. Einige Dimensionen sollten koarsifiziert werden, um die Datendichte zu erhöhen. generated columns sollen bei der Anreicherung der Tabellen helfen. Die so nerzeugten Spalten haben eine niedrige Kardinalität; z.b. man erzeuge eine Spalte auf dem Monats- und Jahresteil einer Datumsspalte oder man errechne (INT(colname))/100, um eine DATE Spalte im Format von Y-M-D auf Y-M zu konvertieren Beispiel: Die Query CREATE TABLE Sales (SALES_DATE DATE, REGION CHAR(12), PRODUCT CHAR(30), MONTH GENERATED ALWAYS AS((INTEGER(DATE)/100) ORGANIZE BY (MONTH, REGION, PRODUCT). select * from sales where sales_date> 2006/03/03 and date< 2007/01/01.. Der Compiler generiert zusätzliche Prädikate: month>= and month<= Um verschwendeten Platz zu reduzieren, sollte mna kleine TS extents definieren das verkleinert auch die MDC Block Size 37

38 DB2 for LUW Index-Design CIX und MDC Wann WAS? Man wähle nicht zu viele Dimensionen aus. Es geschieht sehr selten, sinnvolle Designs zu finden, die mehr als drei MDC Dimensionen mit zumutbaren Speicheranforderungen haben. Je mehr dimensions, desto mehr wird die cardinality der Zellen exponentiell wachsen. Das macht es schwierig, die Expansion der MDC Tabellen auf 10% gegenüber einer non-mdc table zu beschränken. vergrößert sich die Tabelle z.b um das doppelte, so braucht sie nicht nur mehr Speicher, sondern sie verliert auch den Vorteil des clusterings, weil mehr I/Os erfolgen wegen der nur zum Teil gefüllten Blöcke. Ein einfaches Beipiel: Eine Tabelle habe drei Dimensionen, die sinnvoll geclustert werden können, jede mit 10,000 eindeutigen Werten. Gibt es keine Korrelation zwischen diesen Spalten, so wird das clustering aller drei Dimensionen (ohne coarsification ) 10,000 x 10,000 x 10,000 Zellen erzeugen mit entsprechenden nur zum Teil gefüllten Blöcken pro Zelle. Bei eine Blockgröße von 1 MB wird der overhead aus diesem fahrlässigen Design ca. 500,000 TB betragen! Z.B. ein single-dimensional MDC.kann massive Vorteile gegenüber traditionelle single dimensional clustered indexes haben, weil: (1) Clustering wird garantiert (2) MDC Tabellen sind über block und nicht über row indiziert, mit dem Resultat, dass die IX grob 1/1000 so groß sind, wie bei gleichen row-based Indexes. (3) DELETE Performance für MDC roll-out ist verbessert. RID indexes auf MDC werden seit DB2 9.5 asynchron gepflegt. (4) MDC unterstützt roll-in von Daten (5) single-dimensional MDC (mit coarsification ) forcieren das clustering OHNE clustering index. MDC guarantiert clustering ohne REORG der Daten 38

39 DB2 for LUW Index-Design Table und Indexpartitioning Table partitioning wird vorwiegend genutzt, um roll-in und roll-out der Daten optimal zu unterstützen. Die asynchrone cleanup -Technologie der DB2 database systems bedeutet, dass selbst bei globalen Indexes, dieser Index über mehrere Partitions hinweg genutzt werden kann. Eine range kann aus der Tabelle abgehängt ( detached ) werden und die betroffenen index keys werden unmittelbar für Queries unsichtbar. Die keys werden in der Folge über einen background process gelöscht mit wenig Einfluß auf die laufende database. Table partitioning bietet weitere Vorteile verbesserter Query Performance über einen internen Prozess - partition elimination der in vielen Fällen den Query Compiler dazu bringt, verbesserte execution plans zu erzeugen. Weitere Vorteile sind:. table partitioning ermöglicht die Aufteilung einer Tabelle in mehrere data ranges, die einem oder mehreren physikalischen Objekten innerhalb einer database logical partition gespeichert werden können. Das Ziel des table partitioning ist es, Daten logisch so zu organisieren, dass Zugriff und roll-in / roll-out optimal vonstatten gehen kann. Weitere Attribute und features des table partitioning sind noch: Jede range kann in einem eigenen table space abgelegt werden Ranges können unabhängig voneinander durchsucht werden Performance für bestimmte BI-orientierte Queries wird durch partition elimination verbessert Neue ALTER ATTACH/DETACH Statements für einfachere roll-in / roll-out Vorgänge SET INTEGRITY gibt es jetzt online (mit read/write Zugriff auf ältere Daten) Für neue ranges, können ADD plus LOAD Operationen mit ATTACH plus SET INTEGRITY verwendet werden 39

40 DB2 for LUW Index-Design Table und Indexpartitioning Hier ein Beispiel zur Definition einer partitioned table : CREATE TABLE SALES(SALE_DATE DATE, CUSTOMER INT, ) PARTITION BY RANGE(SALE_DATE) (STARTING 1/1/2006 ENDING 3/31/2008, STARTING 4/1/2006 ENDING 6/30/2008, STARTING 7/1/2006 ENDING 9/30/2008, STARTING 10/1/2006 ENDING 12/31/2012 ); Dieses Statement erzeugt vier Tabellenobjekte, jedes mit einer range of data in einem eigenen DS: Hier die best practises für table partitioning : table (range) partitioning wird sinnvoll, wenn data ranges fachlich unterstützt getrennt verarbeitet werden können. range-partitioning Perioden können roll-in / roll-out optimal unterstützen; z.b Partitionierung über Monat kann bei monatlich periodisch verarbeiteten Daten sinnvoll sein. Partitionen auf DATE Spalten können bevorzugt genutzt werden. Roll-in / roll-out Scenarios sind häufig auf Datumsdaten aufgesetzt. 40

41 DB2 for LUW Index-Design Table und Indexpartitioning Man begrenze die Anzahl ranges. Jede range stellt ein Tabellenobjekt dar - Minimum zwei extents. Man vermeide Designs mit exzessiven Partitionzahlen. Ein Anhaltspunkt sei ca. 50MB Daten pro range (einige Gigabytes pro range ist am Besten). Die Größe der ranges sollte zur rollout Größe passen. Partition elimination verbessert die SQL workload Performance. Sie ist eine interne Strategie des Query Compilers. Der Query Compiler beschließt automatisch, ob table partitioning dafür verwendet werden kann. Werden neue ranges hinzugefügt, dann ist ADD table partition mit LOAD Operation oft schneller als der ATTACH einer Partition mit folgender SET INTEGRITY Operation Das LOAD Utility besitzt eine Option mit der man IX inkrementell pflegen kann und mit der nur eine log row pro Ereignis geschrfieben wird ohne Rücksicht darauf, wieviele rows in eine table INSERTed werden. Obwohl dasload Utility concurrent read access auf ältere Daten zuläßt, müssen die Queries gedrained werden. Man sollte table partitions in separate Tablespaces legen, auch um backup und recovery zu optimieren. Table partitions können pro TS backed up und restored werden Platzieren Sie global indexes, die sehr groß werden können, in einem eigenen table space. Dies kann die elapsed time des BACKUP Utility positiv beeinflussen(der index table space kann viel größer werden, als die data table spaces ). Man sollte das clustering der Daten sicherstellen, indem man den range-partitioning key zur führenden Spalte in einem clustered index (kein MDC) macht. Die Daten werden nicht angemessen geclustered, wenn der clustered index nicht vom partition key angeführt wird. Beispiel: PARTITION BY RANGE (Month, Region) CREATE INDEX (Month, Region, Department) CLUSTER 41

42 DB2 for LUW Index-Design Table und Indexpartitioning Man nutze page-level sampling, um die RUNSTATS Zeiten zu senken. Eine sampling rate von 20% bis 30% führen zu qualitativ guten Statistiken mit einer optimalen Performance. Ein Index kann mit partitioning columns einer Tabelle korrelieren oder nicht - Partitioning index (PI) - Secondary index Ein Index kann physisch partitioned sein oder nicht - Partitioned - Non-partitioned Clustering Index: Jeder beliebige Index kann der clustering index sein!! Der clustering index kann unique / non-unique sein 42

43 DB2 for LUW Index-Design Table und Indexpartitioning Secondary IX: jeder Index der kein partitioning index ist partitioned index : jeder Index, der ein PARTITIONED Schlüsselwort im CREATE INDEX Statement besitzt Secondary indexes Indexes können auf Tabellen aus unterschiedlichen Gründen definiert werden: Eindeutigkeit von Spalten, data clustering, aber meistens zur Unterstützung von access paths oder referential constraints. 43

44 DB2 for LUW Index-Design Table und Indexpartitioning Query Performance Charakteristiken von DPSIs query parallelism möglich Queries mit ausschliesslichen Prädikaten auf secondary index columns müssen möglicherweise alle Partitions scannen DB2 versucht ein sogen. partition pruning -- Die Applikation muss explizit die partitioning key predicates angeben, um partition pruning anzustossen, falls ein DPSI existiert Gut für Queries mit Prädikaten auf partitioning columns plus secondary index columns Secondary indexes NPSIs DPSIs pro: favorisieren einer sequential query performance con: partition-level queries oder Utility Operationen pro: favorisieren von partition-level queries oder utility operations con: sequential query performance, und gut für partition -Parallelverarbeitung DPSIs erlauben query parallelism und werden vom Optimizer für Queries mit Prädikaten auf partitioning columns plus Prädikaten auf secondary index columns ausgewählt. 44

45 DB2 for LUW Index-Design Überlegungen zur Indizierung Predicates Gibt es Prädikate auf partitioning columns? Clustering welches sind die "large" Processes gegen die Daten? ORDER BY wie sieht die gewünschte Sequenz aus? DPSIs sind non-unique - Query muss möglicherweise alle parts scannen, falls es keine Prädikate auf partitioning column(s) gibt Häufigkeit der Index maintenance (INSERT / UPDATE / DELETE / utilities) gegen DPSI / NPSI Ist die # parts auf der Tabelle eine Überlegung für DPSI / NPSI wert? (z. B parts ) (Online) REORG - Häufigkeit? 45

46 DB2 for LUW Index-Design Überlegungen zur Indizierung Non-Unique Indexes und Vorkommenhäufigkeiten Das Problem von "doppelten" Indexwerten ist ihre Vorkommens-häufigkeit: Sie kommen eben meist nicht nur doppelt vor, sondern mehrfach. Dies gilt besonders bei Informationen wie "Status", "xxxx-typ", "yyyy- Art usw. DB2 aktualisiert diese "duplicates" bei jedem INSERT und DELETE über Einbzw. Austräge, d.h. die Selektivtät dieser Werte verändert sich bei dynamischen Tabellen ständig. Beim Typ-2 Index ordnet DB2 die "Duplicates" aufsteigend nach RID, und macht damit "binary search"-algorithmen möglich. "Duplicates" werden beim DELETE nur logisch gelöscht ("leaf page" bleibt strukturell erhalten). 46

47 DB2 for LUW Index-Design Überlegungen zur Indizierung Non-Unique Indexes und Vorkommenhäufigkeiten Beim Typ-2 Index ordnet DB2 die "Duplicates" aufsteigend nach RID, und macht damit "binary search"-algorithmen möglich. "Duplicates" werden beim DELETE nur logisch gelöscht ("leaf page" bleibt strukturell erhalten). Vorteile dieser Technik: 1. Vermeiden des "nicht selektiven" Index auf Tabelle "A". 2. Abhängig von der Länge des PK + der Spalte "Status" spart man mehr oder weniger Plattenplatz. 3. Der Index auf die neue Tabelle hat weniger Ebenen als der Index auf eine Tabelle "A" Nachteile: 1. Die Frage nach den "nicht-typischen" Statusinformnationen erfordert einen JOIN 2. Die Applikation muß die Datenkonsistenz in beiden Tabellen sicherstellen, wenn sich der Status ändert. 47

48 DB2 for LUW Index-Design Überlegungen zur Indizierung Non-Unique Indexes und Vorkommenhäufigkeiten In der Praxis wird man, wenn die Daten mit dem typischen Wert (Status = "bezahlt") gelesen werden, folgenden Weg gehen: Man ordnet der Spalte "Status" eine zusätzliche Spalte hinzu, nicht zuletzt, um innerhalb eines Cursors repositionieren zu können. Dies ist unabhängig vom genutzten Indextyp. Je weniger die "Duplicates" nicht-typischen Indexwerten sind, umso eher ist es zu empfehlen, eine eigene Tabelle mit den nicht-typischen Werten als Daten und dem PK der "Haupttabelle" als "primary key" zu definieren. Um die Daten mit einem anderen Status als "bezahlt" wiederzufinden muß man hier in beiden Tabellen suchen: JOIN über den Primary Key und die Spalte "Status". Vorteile dieser Technik: 1. Die "Status-Only"-Tabellen bestehen aus der Key-Spalte und einem (eindeutigen) Index darauf. 2. Für die Statustabellen gibt es als Prädikat nur die JOIN-Bedingung 3. Plattenplatz wird eingespart 4. Die Status-Spalte muß nicht repliziert werden 5. Die Indizes auf den neuen Tabellen haben weniger "pages" und "levels" 48

49 DB2 for LUW Index-Design Überlegungen zur Indizierung Unique Indexes Man kann Indizes definieren, die Eindeutigkeit für alle Werte sicherstellen außer für NULL-Werte. Erlaubt sind KEINE Mehrfachvorkommen von NULL-Werten. Indizes, die eine große Anzahl "Duplicates" mit NULL-Werten erwarten, können nicht als UNIQUE definiert werden. UNIQUE sichert die Tabelle gegen zwei oder mehr rows mit gleichen Schlüsselwerten ab. Kann ein Schlüsselwert NULL Werte enthalten, so wird die Bedeutung von derselbe Wert angenommen INCLUDE-Klausel Beispiel: Optimierung von Abfragen auf die KFZ Tabelle mit Vertrags-/Kundennr., Kasko: VOR V9 CREATE UNIQUE INDEX I1 ON emp (EMPNO); CREATE INDEX I2 ON emp (EMPNO, DEPTNO, NAME); Optimierung in V9 CREATE UNIQUE INDEX I1 ON emp (EMPNO) INCLUDE (DEPTNO, NAME) COLLECT SAMPLED DETAILED STATISTICS SELECT EMPNO, DEPTNO, NAME FROM emp WHERE EMPNO >= 4711 AND DEPTNO LIKE M% ORDER BY DEPTNO, NAME 49

50 DB2 for LUW Index-Design Überlegungen zur Indizierung Indexes zur Vermeidung von SORT-Vorgängen Indizes können dazu benutzt werden, um Sort-Vorgänge in SQL-Statements zu verhindern. GROUP BY, ORDER BY, DISTINCT und JOIN-Verarbeitung kann von Indizes profitieren. GROUP BY braucht hierfür alle Spalten im Index und dort in der entsprechenden Reihenfolge. Ob aber der Index dann aufsteigend oder absteigend geordnet ist, ist vollkommen irrelevant: GROUP BY setzt keinerlei Sequenzen voraus. Die Vermeidung von ORDER BY erfordert wohl die meisten Voraussetzungen: 1. Die Sequenz der Spalten im Index muß identisch sein mit ihrer Folge im ORDER BY - Statement. 2. Das Prädikat "aufsteigend" / "absteigend" sollte ebenfalls auf die ORDER BY Spezifikation passen. Generell aber ist der "filter factor" der Prädikate, der auf Indizes abgebildet werden kann wichtiger als das Vermeiden von Sort-Vorgängen. Statistiken spielen immer eine Rolle (RUNSTATS): Detailed: ON COLUMNS ON KEY COLUMNS NUM_FREQVALUES NUM_QUANTILES WITH DISTRIBUTION CLUSTERFACTOR und PAGE_FETCH_PAIRS statistics werden gesammelt man kann eine Liste von Spalten angeben, für die Statistiken gesammelt werden sollen. man sammelt Statistiken für alle IX Spalten einer Tabelle. man sammelt die Vorkommenshäufigkeiten von Werten. man sammelt Informationen von Verteilungsquantilen sowohl basic statistics, als auch distribution statistics werden gesammelt RUNSTATS ON TABLE db2user.employee AND SAMPLED DETAILED INDEXES ALL 50

51 DB2 for LUW Index-Design Überlegungen zur Indizierung (Zusammenfassung) Frage: Ein multicolumn index ODER mehrere Indexes??? 1. Nutzung durch die Prädikate, d.h. Die Art, wie die Prozesse ihre Prädikate formulieren, kann als Hauptleitlinie für die Definition von Indizes gesehen werden. Die Kombination der Prädikate, die Art der kritischen Prozesse (1 bis 3 skaliert), und die verwendeten logischen Operatoren, die die Prädikatsaussagen miteinander verbinden, bestimmen das Index-Design. 2. Die Kardinalität der indizierten Spalten ist ein wichtiger Faktor, wenn man mehrere Spalten in einem Index zusammenfassen will. Die eingebauten Grenzwerte in einem "multiple index scan können den Zugriff schnell zu einem "tablespace scan" werden lassen. Um dies zu vermeiden, muß man die Anzahl der qualifizierenden RID's begrenzen, d.h. die Filter der Index-Prädikate müssen passen. 3. Die Effizienz des Zugriffspfads hängt von mehreren Faktoren ab. Zunächst hat man in der Hauptsache zwei Möglichkeiten: a) "Multiple Index" Zugriff: Mehrere Indizes in einem SQL-Statement können nur aufgrund der Entscheidung des Optimizers als gemeinsamer Pfad genutzt werden. Es wird immer "list prefetch genutzt, wenn man eine bestimmte Menge RID's und nicht die aktuellen Spaltenwerte zurückerhalten will. Dieser hat drei Nebeneffekte: es gibt keinen "index-only" - Zugriff alle qualifizierten Zeilen müssen aus dem Index gelesen werden, bevor die erste Zeile ans Programm/den User übergeben werden kann "index screening" kann nicht genutzt werden b) "Single Index" Zugriff: Ein einzeln genutzter Index kann ein effizienter Zugriffspfad beim Filtern von zutreffenden Kriterien und Prädikaten sein. Aber: Es wird schwierig EINEN Index zu entwerfen, wenn eine Hälfte der SQL-Prädikate auf der "Spalte X" und die andere Hälfte auf der "Spalte Y" basieren. In 50% der Fälle wird man einen "non-matching index scan" wenn nicht einen "tablespace scan" auslösen. Das bedeutet: "single index"-zugriffe sind nur effizient, wenn der größte Teil der SQL-Statements Statements dieselben passenden Prädikate benutzen. 51

52 DB2 for LUW Index-Design Überlegungen zur Indizierung (Zusammenfassung) Frage: Ein multicolumn index ODER mehrere Indexes??? Die richtige Anordnung der Spalten im Index kann helfen, Sorts zu vermeiden, INSERT- Vorgänge zu unterstützen, falls der IX "clustering ist und über Prädikate die Chancen auf "matching index" Zugriffe zu erhöhen. 1. Vermeiden von Sortiervorgängen: d.h.der Index muß genau der Sequenz der sortierten Spalten entsprechen. Man hat keine Option, das Design anders zu gestalten, außer das SQL-Statement ändert sich. 2. Minimieren der Reorganisationshäufigkeit: Die Spaltenfolge und die INSERT-Anforderungen ("home page"-definition) bestimmen die Datenstreuung. Will man dies verhindern, so ist man an eine bestimmte Spaltenfolge im Index gebunden. Hierbei gibt es Interessenkonflikte zwischen den ge-wünschten INSERT-Sequenzen und den Filterfaktoren in den Queries bzw. der Anzahl passender Spalten. Die Auswirkung auf den Zugriffspfad ist hier stets der wichtigste Aspekt. Eine Lösung kann heißen: Höhere REORG-Frequenz oder Anpassen der "free space"-parameter im DB2-Objekt. 3. Maximieren der Anzahl von "matching columns": Optimiert wird die Nutzung von Prädikaten, wenn möglichst viele Spalten, die mit einem "=" Operator angegeben sind, als erste Spalten im Index vorkommen. Sollten mehrere Spalten gleichzeitig in den Queries mit einem "=" - Operator angegeben werden, so sollte die Spalte mit der höchsten Kardinalität am Anfang eines "compound index" stehen. Werden nicht alle Indexspalten im Prädikat genutzt, dann ist es wichtig die Spalten mit dem höchsten Filterfaktor an den Anfang des Index zu stellen, um DB2 bei der Pfad-Auswahl zu unterstützen. 4. Einfluss von "correlated index"-spalten: Früher konnte der Optimizer sogenannte "correlated columns" im Index nicht erkennen. So konnte die Auswahl des Zugriffspfads zu erheblichen Performance- Verlusten führen. Jetzt kann das Utility RUNSTATS die Statistiken über eine Menge von im Index zusammengefassten Spalten sammeln. Dies ermöglicht dem Optimizer eine genauere Bestimmung der Filterfaktoren, insbesondere für alle "=" - gesteuerten Operatoren 52

53 DB2 for LUW Index-Design Überlegungen zur Indizierung (Zusammenfassung) Frage: Ein multicolumn index ODER mehrere Indexes??? Folgende Query-Typen profitieren von diesen neuen Statistiken: Prädikate mit "matching columns" in einem Index dazu muß der Index mindestens aus drei Spalten bestehen, z.b. hat ein Index 4 Spalten, kann man neben den FIRSTKEYCARD-Informationen ( nur für die 1. Spalte ) und den FULLKEYCARD-Informationen ( für alle 4 Spalten ) auch Statistiken für die ersten zwei bzw. die ersten drei Spalten nutzen. Queries mit Prädikaten, für die MATCHCOLS = 2 oder MATCHCOLS = 3 ist, profitieren von diesen zusätzlichen Informationen FIRSTKEYCARD BIGINT FIRST2KEYCARD BIGINT FIRST3KEYCARD BIGINT FIRST4KEYCARD BIGINT FULLKEYCARD BIGINT Prädikate für "index screening RUNSTATS sammelt keine Statistiken über "index subsets". Beispiel: Besteht ein Index aus 4 Spalten, so hat das Utility RUNSTATS keine Informationen über die zweite und dritte Spalte. Aber: Man kann Informationen über diese "subsets" in der Katalogtabelle SYSCOLDIST eintragen. Der Optimizer nutzt diese Daten dann zur Pfadbestimmung. 53

54 DB2 for LUW Index-Design Index Design Matrix Welche IX sollten angelegt werden? Ein guter Ansatz ohne Berücksichtigung von cardinality und frequency Information: CREATE INDEX IX1 on TB (Col3, Col1) allow reverse scans; CREATE INDEX IX2 on TB (Col3, Col5, Col2) allow reverse scans; CREATE INDEX IX3 on TB (Col3, Col2, Col6) allow reverse scans CLUSTER; CREATE INDEX IX4 on TB (Col3, Col6, Col8, Col9) allow reverse scans; 54

55 DB2 for LUW Index-Design Überlegungen zur Indizierung (Zusammenfassung) Die Reihenfolge der Spalten Im Index - Beispiele Beispiel 1 SELECT * FROM TABLE1 A WHERE A.COLOR IN ( BLUE, GREEN, RED ) AND A.SIZE IN ( LARGE, X-LARGE ) AND A.STYLE = ADULT MENS T-SHIRT CREATE INDEX X1_TABLE1 ON TABLE1 (COLOR, SIZE, STYLE) ( keys in beliebiger Reihenfolge ABER die selektivste Spalte zuerst) Beispiel 2 SELECT * FROM TABLE1 A WHERE A.COLOR IN ( BLUE, GREEN, RED ) AND A.SIZE IN ( LARGE, X-LARGE ) AND A.STYLE = ADULT MENS T-SHIRT AND A.INVENTORY > 100 CREATE INDEX TABLE1_INDEX1 ON TABLE1 (COLOR, SIZE, STYLE, INVENTORY) ( keys in beliebiger Reihenfolge ABER die selektivste Spalte zuerst und das non-equal Prädikat zuletzt) 55

56 DB2 for LUW Index-Design Überlegungen zur Indizierung (Zusammenfassung) Die Reihenfolge der Spalten Im Index - Beispiele Beispiel 3 SELECT * FROM TABLE1 A, TABLE2 B WHERE A.KEY = B.KEY AND A.COLOR IN ( BLUE, GREEN, RED ) AND A.SIZE IN ( LARGE, X-LARGE ) AND A.STYLE = ADULT MENS T-SHIRT AND A.INVENTORY > 100 CREATE INDEX X1_TABLE1 ON TABLE1 (COLOR, SIZE, STYLE, KEY, INVENTORY) ( keys in beliebiger Reihenfolge ABER die selektivste Spalte zuerst und das non-equal Prädikat zuletzt) CREATE INDEX X1_TABLE2 ON TABLE2 (KEY) Beispiel 4 SELECT * FROM TABLE1 A, TABLE2 B WHERE A.KEY_COL1 = B.KEY_COL2 AND A.COLOR IN ( BLUE, GREEN, RED ) CREATE INDEX X1_TABLE1 ON TABLE1 (COLOR, KEY_COL1) CREATE INDEX X1_TABLE2 ON TABLE2 (KEY_COL2) (Unter Vorwegnahme des key row positioning und des multi-key join (MX)) 56

57 DB2 for LUW Index-Design Überlegungen zur Indizierung (Zusammenfassung) Die Reihenfolge der Spalten Im Index - Beispiele Beispiel 5 SELECT A.STORE, A.STYLE, A.SIZE, A.COLOR, SUM(A.QUANTITY_SOLD) FROM TABLE1 A, TABLE2 B WHERE A.KEY = B.KEY AND A.COLOR IN ( BLUE, GREEN, RED ) AND A.SIZE IN ( LARGE, X-LARGE ) AND A.STYLE = ADULT MENS T-SHIRT GROUP BY A.STORE, A.STYLE, A.SIZE, A.COLOR CREATE INDEX X1_TABLE1 ON TABLE1 (COLOR, SIZE, STYLE, KEY); ( keys in beliebiger Reihenfolge ABER die selektivste Spalte zuerst) CREATE INDEX X2_TABLE1 ON TABLE1 (STORE, STYLE, SIZE, COLOR) ( keys sollten in dieser Reihenfolge sein, um die grouping Anweisung zu unterstützen) CREATE INDEX X1_TABLE2 ON TABLE2 (KEY) Beispiel 6 SELECT FROM GROUP A.COLOR, A.SIZE, SUM(A.SALES), SUM(A.QUANTITY) TABLE1 A BY A.COLOR, A.SIZE CREATE INDEX X1_TABLE1 ON TABLE1 (COLOR, SIZE) (Unter Vorwegnahme des index grouping ) Oder CREATE INDEX TABLE1_INDEX1 ON TABLE1 (COLOR, SIZE, SALES, QUANTITY) (Unter Vorwegnahme des index grouping und des index only access mit allen Spalten im IX) 57

58 DB2 for LUW Index-Design Überlegungen zur Indizierung (Zusammenfassung) Die Reihenfolge der Spalten Im Index - Beispiele Beispiel 5 SELECT A.STORE, A.STYLE, A.SIZE, A.COLOR, SUM(A.QUANTITY_SOLD) FROM TABLE1 A, TABLE2 B WHERE A.KEY = B.KEY AND A.COLOR IN ( BLUE, GREEN, RED ) AND A.SIZE IN ( LARGE, X-LARGE ) AND A.STYLE = ADULT MENS T-SHIRT GROUP BY A.STORE, A.STYLE, A.SIZE, A.COLOR CREATE INDEX X1_TABLE1 ON TABLE1 (COLOR, SIZE, STYLE, KEY); ( keys in beliebiger Reihenfolge ABER die selektivste Spalte zuerst) CREATE INDEX X2_TABLE1 ON TABLE1 (STORE, STYLE, SIZE, COLOR) ( keys sollten in dieser Reihenfolge sein, um die grouping Anweisung zu unterstützen) CREATE INDEX X1_TABLE2 ON TABLE2 (KEY) Beispiel 6 SELECT FROM GROUP A.COLOR, A.SIZE, SUM(A.SALES), SUM(A.QUANTITY) TABLE1 A BY A.COLOR, A.SIZE CREATE INDEX X1_TABLE1 ON TABLE1 (COLOR, SIZE) (Unter Vorwegnahme des index grouping ) Oder CREATE INDEX TABLE1_INDEX1 ON TABLE1 (COLOR, SIZE, SALES, QUANTITY) (Unter Vorwegnahme des index grouping und des index only access mit allen Spalten im IX) 58

59 DB2 for LUW Index-Design Weitere Tips zur Indizierung 1. CLUSTER: das richtige clustering kann die CPU Verbräuche um bis zu 50% senken! (1) Man suche die Tabelle mit den höchsten Leseraten auf den rows (2) Dazu suche man die SQL s, die die I/O Last auf dieser Tabelle auslösen (3) Aus diesen SQL s die Statement(s) mit der höchsten aggregierten SORT-Zeit (4) Mit dem Design Advisor / MDC Advice sollte mna dann die Kosten als input workload abschätzen lassen bzw. die ORDER BY/GROUP BY Klauseln untersuchen (5) Dann: Implementieren eines MDC, oder 1 CLUSTER INDEX 2. Index Design Checkliste (1) Indexes mit Cardinality = 1 sind das Todesurteil jeder Performance. Also keine IX nach dem Motto: just in case (2) Indexes mit ungleicher Verteilung sind teuer für Insert, Update, Delete (3) Redundante Indexes sind teuer in der Verwaltung, verbrasuchen Plattenplatz und bieten keinen Mehrwert für DB2 also DROP! IX on C1, C2 <<- Redundant Index IX on C1, C2, C4 (4) Man nutze composite indexes, um single column indexes los zu nwerden (5) Bei den composite indexes stehen die am häufigsten genutzten Spalten am Anfang(= predicate ). (6) Clustering Indexes reduzieren Sort & CPU Kosten (7) CREATE INDEX auch auf kleine TABLES, um der Gefahr hoher CPU & I/O Kosten vorzubeugen.. 59

60 DB2 for LUW Index-Design 3. Index Forget Me Not Options (1) Erlauben Sie REVERSE SCANS (neu seit 9.5 default ) (2) CLUSTER ein cluster IX pro Tabelle wegen SORT, prefetch etc. Please! (3) PCTFREE 10 N: wenn > 10, sind es nur 10% maximal auf den non-leaf pages (4) LEVEL2 PCTFREE N gibt an, wieviel % auf allen index level 2 Pages als free space zur Anwendung kommt, wenn der IX aufgebaut wird (0 bis 99). Ist LEVEL2 PCTFREE nicht gesetzt, so wird ein Minimum von10% bzw, PCTFREE Größe für alle non-leaf pages angenommen. (5) MINPCTUSED N (gesetzt auf < 50, idealerweise 25-33) Online merge für nahe gelegen leaf pages Beeinflußt Update & Delete Performance (geringfügig) Merge erfolgt auf Type 2 IX, wenn die Tabelle im exclusive mode gesperrt ist, ansonsten pseudo deleted Wichtig: Online Reorg der Indexe CLEANUP ONLY ALL (6) PAGE SPLIT SYMMETRIC (DEFAULT) HIGH genutzt für ascending index Werte LOW sinnvoll für descending index Werte (7) COLLECT [ SAMPLED DETAILED ] STATISTICS erfolgt sofort anstatt eines späteren RUNSTATS (8) Ein expliziter Index für den PK. DB2 DBM indiziert den PK automatisch, aber mit einem systemgenerated Namen. Dieser Name ist für die DBA nicht einfach zu administrieren. (9) Das db2pd Kommando, zeigt an, wie häufig Indexes verwendet wurden: Beispiel: db2pd -db MY_DATABASE -tcbstats index Die Indexe werden über die IID referenziert und können damit auf die SYSIBM.SYSINDEXES's IID verknüpft werden 60

61 DB2 for LUW Index-Design CREATE INDEX als Template Drucken und als Referenz aufheben! CREATE [UNIQUE] INDEX schema.c1c2c4c8 on schema.tablename ( C1 ASC, C2 ASC, C4 ASC, C8 ASC ) [INCLUDE (C9, C11)] [CLUSTER] PCTFREE 15 LEVEL2 PCTFREE 15 MINPCTUSED 40 ALLOW REVERSE SCANS PAGE SPLIT SYMMETRIC [ or HIGH LOW ] COLLECT DETAILED STATISTICS 61

62 DB2 for LUW Index-Design 62

63 DB2 for LUW Design und Objektdefinition Bauen Sie ihre Informationsumgebung nach NUTZENGESICHTSPUNKTEN auf... 63

64 DB2 for LUW SQL Tuning & Monitoring Kapitelinhalt Best Practices in einem DWH Umfeld BP - Database Design BP Überlegungen zu Applikationen BP Performance Layer BP - Configuration and Operations DB Design und Objektdefinitionen Denormalisierungsmuster Physisches Design und Datentypen bei DB2 Index Designmuster SQL Tuning Query Design Optimization class und Optimizer SQL EXPLAINs SQL runtime optimization (MQT s, temp Tables, SORTs) Beeinflussen des access plan bei DB2 Zugriffsarten bei DB2 Regeln zu Tabellen- und Index-Design 64

65 DB2 for LUW SQL Tuning (Query Design) SQL Tuning Der Erfolg von DB-Applikationssystemen hängt von verschiedenen Faktoren ab: Technologie Lösungsarchitektur Gelöste Probleme Benutzererwartungen Letztendlich muss eine erfolgreiche Implemetierung hoch-performant und anpassungsfähig sein. Bei sogen. mission critical applications, wie Telekom- und Finanzanwendungen ist die real-time Performance sehr wichtig. In einer Applikation, die mit einem back-end database system interagiert, ist die SQL Performance in Bezug auf die Antwortzeiten entscheidend. Das Tuning der SQL Performance wird notwendig aus verschiedenen Gründen: komplexe physische Modelle, dynamic workload, Query Design, System Performance, Datenbankimplementierung, ständige Änderung des data environment und harte User-Anforderungen Query design Ein gutes Design der application queries muss einhergehen mit einem realistischen Logischen Datenmodell(LDM), das unter Performance-Gesichtspunkten des genutzten DBMS in das Physical Data Model (PDM) transformiert wurde. Dies sind die Voraussetzungen für die Formulierung einer effizienten Query. Dabei gibt es mehrere Wege, dieselbe Query zu konstruieren oder von einem Gerator erzeugen zu lassen - manche Varianten sind weniger effizient oder mehr oder weniger redundant. 65

66 DB2 for LUW SQL Tuning (Query Design) Query design Die Konstruktion einer Query basiert auf den SQL Standards und kann so angepasst werden, dass alle möglichen DBMS Funktionen ausgenutzt werden. Der DB2 Optimizer kann auch einen Query Rewrite, falls es Wege gibt, die Query semantisch gleich, aber für den Optimizer effizienter und mit mehreren Möglichkeiten ausgestattet zu formulieren. Der DB2 cost-based optimizer nutzt eine rule-based engine, um Queries umzuschreiben. Eine einfache Regel für guter Query Design ist das Vermeiden von Redundanzen. Beispiel: Die klassische CUSTOMER Tabelle beinhaltet einen custkey und eine Spalte NAME Der custkey ist für jeden Kunden eindeutig und so gibt es genau eine row pro custkey in der Tabelle CUSTOMER. Um nun die einzelnen Kunden aufzulisten formulieren wir folgende Query: SELECT DISTINCT custkey, name FROM customer Diese Query zeigt keine Redundanzen auf unbd muss wie folgt geschrieben werden: SELECT custkey, name FROM customer 66

67 DB2 for LUW SQL Tuning (Query Design)... Alles eine Frage der Formulierung und Mengendefinition... to the airport please 67

68 DB2 for LUW SQL Tuning (Query Design) Tuning von SQL-Queries(Grundlagen) Das Tuning von SQL Queries kann folgende Aktivitäten erfordern: 1. Hinzufügen und/oder Ändern von Indizes 2. Anpassen der Spaltengrössen in Tabellen / im Programm 3. Neu-/Umschreiben von Queries Insbesondere Queries, die Bestandteil von angepasstem Code, generierten Abfragen und benutzerverfasste Queries bedürfen häufig eines Tuning. Seit DB2 Version 8 sind es bis zu 225 Basistabellen, die in einer einzigen "joined expression" stehen können. Neue features bestehender oder neuer Funktionen in neuen Releases von DB2 werden seltenst in alten Queries genutzt und eingebaut, obwohl DB2 daraus Vorteile ziehen könnte. Nur allzu wenig wird z.b. die Verwendungsmöglichkeit von CASE Konstrukten beachtet. Mit CASE kann man in SQL UNION Konstrukte minimieren/eliminieren bzw. restrukturieren. In einem 5-fachen UNION Block beispielsweise kann alleine über den Weg von CASE- Formulierungen eine Reduzierung von elapsed time und CPU-Zeit von bis zu 80% erzielt werden. 68

69 DB2 for LUW SQL Tuning (Query Design) Tuning von SQL-Queries(Grundlagen) Beispiel: SELECT CLERK, CUSTKEY, 'CURRENT' AS STATUS, ORDERPRIORITY FROM TBORDER WHERE ORDERSTATUS = '0' UNION ALL SELECT CLERK, CUSTKEY, 'OVER 30' AS STATUS, ORDERPRIORITY FROM TBORDER WHERE ORDERSTATUS = '1' UNION ALL SELECT CLERK, CUSTKEY, 'OVER 30' AS STATUS, ORDERPRIORITY FROM TBORDER WHERE ORDERSTATUS = '2' ; SELECT CLERK, CUSTKEY, CASE WHEN ORDERSTATUS = '0' THEN 'CURRENT' WHEN ORDERSTATUS = '1' THEN 'OVER 30' WHEN ORDERSTATUS = '2' THEN 'OVER 60' END AS STATUS, ORDERPRIORITY FROM TBORDER ; 69

70 DB2 for LUW SQL Tuning (Query Design) Wo kann ich gute und schlechte SQL-Queries erkennen? Die EXPLAIN_Tables Der EXPLAIN gibt Auskunft über Index-Benutzung Zugriffsmodus SORT-Alghorithmen Erzeugen von temporären (Zwischen-)Tabellen Reihenfolge der Tabellen-/Indexverarbeitung EXPLAIN hilft potentielle Performance-Engpässe zu erkennen und legt entsprechende Informationen in den EXPLAIN-Tabellen ab Kosten werden pro Schritt und insgesamt offengelegt a) die Kosten werden aufgrund der verfügbaren Informationen ermittelt b) die Kosten werden geschätzt, da Informationen fehlen Geschätzte Prozessorkosten in Millisekunden 70

71 DB2 for LUW SQL Tuning (Query Design) Umformulieren von Queries 1. WARUM Mehr Zugriffspfade zur Auswahl für den Optimizer Kostenmodelle für die Aufwandschätzung und die Auswahl des/der effizientesten Modells(e) 2. Transformationsmöglichkeiten Prädikate Joins View / table expressions Verteilung und pruning (Erkennen und Weglassen nicht zielführender Äste in einem Optimizing-Tree ) 71

72 DB2 for LUW SQL Tuning (Query Design) Einsatzspektrum und Grenzen von SQL Generell gilt: Zunächst sollte die gesamte SQL-Funktionalität genutzt werden... Bei Performance-Problemen wird Als erstes nach DB2- bzw. SQL-Varianten gesucht Dann erst eine programmtechnische Lösung angestrebt, bei der zu prüfen ist, ob wirklich ein positiver Effekt gegenüber der SQL-Lösung eintritt... Make it Make it WORK Make it WORK FAST... 72

73 DB2 for LUW Der access path Kapitelinhalt Best Practices in einem DWH Umfeld BP - Database Design BP Überlegungen zu Applikationen BP Performance Layer BP - Configuration and Operations DB Design und Objektdefinitionen Denormalisierungsmuster Physisches Design und Datentypen bei DB2 Index Designmuster SQL Tuning Query Design Optimization class und Optimizer SQL EXPLAINs SQL runtime optimization (MQT s, temp Tables, SORTs) Beeinflussen des access plan bei DB2 Zugriffsarten bei DB2 Regeln zu Tabellen- und Index-Design 73

74 DB2 for LUW Der access path Die Query-Evaluation bei DB2 select * from dept d, emp e where d.budget > // P1: stage 1 and d.name like %Opt% // P2: stage 2 and d.id = e.dept // P3: matching and e.salary > // P4: matching and e.bonus < 7000 // P5: screening (1) Matching predicates: Verkürzen der index search range (2) Screening predicates: Filtern der unqualifizierten IX keys (3) Stage-1 predicates: Filtern der unqualifizierten Sätze im Bufferpool (4) Stage-2 predicates: Filtern der unqualifizierten Sätze im private pool (5) RSCAN: Holen der einzelnen Sätze einer Tabelle (6) ISCAN: Holen der Sätze mit qualifizierter RID (record id) (7) NL Join: Einmaliges Durchsuchen der inner table pro outer record und Rückgabe der passenden Sätze. 74

75 DB2 for LUW Der access path Die Query-Verarbeitung erfordert CPU-Zeit und Datenzugriffszeit(I/O's). Entsprechend kann man Queries typisieren in: CPU-Bound Queries = CPU-intensive Queries Die Queries verbrauchen den überwiegenden Teil ihrer Laufzeit mit dem Filtern der Daten, mit komplexen Funktionsbearbeitungen bzw. mit Darstellungsoptionen z.b. durch GROUP BY, ORDER BY, DISTINCT... I/O-Bound Queries = I/O-intensive Queries Die Queries verbrauchen den überwiegenden Teil ihrer Laufzeit mit dem Ein- und Auslagern von Pages. Diese Queries verfügen über wenige aufwendige Funktionen und Selektionsanforderungen. 75

76 DB2 for LUW Der access path Die Optimierung Der DB2 Optimierer analysiert das SQL-Statement, interpretiert bestimmte Statistik-Informationen aus den Katalog-Tabellen und ermittelt die möglichen Zugriffspfade und I/O-Zugriffstypen zu den Daten. Entscheidungsfaktoren des Optimierers I/O und Status dertables Verfügbare IX SQL-Query CPU-Nutzung Statistik-Daten IX-Aufbau BP-Auswahl Anzahl Zeilen Unique Typ(einfach, (CARDF) komplex) CPU-Modell/CPU s Anzahl Pages Clustered SELECT (NPAGES) (CLUSTERRATIO) (Auswahl-Liste) % genutzte Pages Index Keys Prädikate und (PCTPAGES/FPAGES) (single, composite) Verarbeitungsebene mehrere Indizes Klauseln(ORDER BY, GROUP BY) 76

77 DB2 for LUW Der access path Die Prädikate und Prädikatkategorien Gemeinhin werden die Suchbedingungen von Queries als Prädikat(e) bezeichnet. Sie stehen in der WHERE-Klausel eines SQL-Statements: SELECT... FROM TAB WHERE C1 = 5 AND C4 > 100 AND C2 BETWEEN 01 AND 11 Dafür existieren folgende Prädikatskatekorien: 1. Simple oder Compound ein mit AND bzw. OR verknüpftes Prädikat ist "compound" ansonsten ist es "simple 2. Operationstypen ein "simple" Prädikat definiert sich durch seinen Operationstyp: - Subquery: anzahl IN (SELECT zahl FROM...) - Equal: anzahl = 5; abt_nr IS NULL; - IN-Liste: anzahl IN (1, 5, 10, 13) - Range: anzahl > 3; anzahl BETWEEN 1 AND 15; name LIKE 'D%' - NOT: anzahl <> 0; anzahl NOT BETWEEN 3 AND 6 - ON: ON ma.abt_nr = abt.abt.nr 77

78 DB2 for LUW Der access path Die Prädikate und Prädikatkategorien 3. Local oder Join ein Prädikat, das mehr als eine Tabelle referenziert, oder eine Korrelation beinhaltet ist als JOIN- Prädikat definiert. Alles andere sind LOKALE Prädikate 4. Indexable oder Non-Indexable ein Prädikat, das direkt beim Einlesen der Daten geprüft werden kann ist STAGE1, ansonsten STAGE2 5. Boolean Term(BT) ein BT ist ein "simple" oder "compound" Prädikat. Wenn ein BT für eine bestimmte Zeile als "unwahr" oder "falsch" erkannt wird, sind alle diese Zeile betreffenden Bedingungen als "falsch" zu qualifizieren:...where C1 = 3 AND ( C4 > 5 OR C2 = 7) In One-IX-Search-Prozessen werden nur BT-Prädikate für Matching Scans verwendet. Der Optimizer versucht ggf. eine IX-Nutzung über einen Multi-IX Access 78

79 DB2 for LUW Der access path Die Prädikate und Prädikatverarbeitung Indexscreening STAGE1 oder STAGE2 Boolean Term (BT) der DM kann das Suchargument innerhalb des Index filtern. Die Suche betrifft weitere Indexspalten, die nicht im Rahmen des Matching Index Scan nutzbar sind. Der DM liest zunächst nur Index-Pages und leitet daraus die erforderlichen Datenpage-Zugriffe ab. ein Prädikat, das direkt mit dem Einlesen der Daten geprüft werden kann ist STAGE1 ansonsten STAGE2 ein BT kann ein "simple" oder "compound" Prädikat sein. Der Optimizer versucht ggf. einen "Multiple index access" Häufig spricht man von STAGE1 und STAGE2-Prädikaten, da diese Angabe die Verarbeitungseffizienz des Prädikats beschreiben kann. Entscheidend ist also die Verarbeitungsfolge der Prädikate im RDS. WAS bedeutet das bei DB2? 1. welcher Art das Prädikat ist, hängt davon ab, WANN es im RDS wirksam und von DB2 bearbeitet werden kann 2. grundsätzlich ist ein Prädikat umso besser (für die Performance), je eher es im RDS bearbeitet werden kann. 3. "non-sargable"-prädikate führen in den meisten Fällen zu TS-Scan's, wenn sie die einzigen Prädikate einer SQL-Formulierung darstellen. 79

80 DB2 for LUW Der access path Die Filterfaktoren(FF) Filterfaktoren(FF) werden aufgrund der semantischen Anforderungen mit diversen Berechnungsformeln ermittelt. Werden mehrere Spalten im Prädikat angesprochen, wird der FF über Multiplikation ermittelt Beispiel: IX-Spalten: abt_nr, nachname, einst_dat FULLKEYCARD 2500 unterschiedliche Werte im IX FIRSTKEXCARD 50 unterschiedliche Abteilungsnummern COLCARD von nachname 20 verschiedene Nachnamen CARD Tabellenzeilen 1) WHERE abt_nr = A00 FF = 1/FIRSTKEYCARD = 1/50 = 0,02 2) WHERE abt_nr = A00 FF = 1/FULLKEYCARD = 1/2500 = 0,0004 AND nachname = Maier AND einst_dat = ) WHERE abt_nr = A00 FF = (1/FIRSTKEYCARD * 1/COLCARD von nachname) AND nachname = Maier (1/50 * 1/20) = 0,001 Generell ist ein niedriger FF, der nur eine kleine prozentuale Auswahl aus dem Gesamtvolumen ausweist, kostengünstiger als ein hoher FF 80

81 DB2 for LUW Der access path Der Optimizer und die Suche nach dem access path SELECT d.name, sum(e.id), avg(e.compensation) FROM employees e, departments d, projects p WHERE d.location in ( SVL, ARC ) and d.id = e.dept and e.id = p.employeeid and p.class in ( top secret, confidential ) GROUP BY d.name ORDER BY d.name Letztendlicher Zugriffspfad Annahmen: Index: ix1(d.location) ix2(e.id), ix3(e.dept) ix4(p.class) Cardinality: card(e) = card(d) = card(p) = Filtering factor: FF(P1) = 1%, FF(P4) = 10% Employee Department # von join sequences (3! = 6) # von access methods (RSCAN, ISCAN, Midx, etc) # von join methods (NLJ, SMJ, HBJ) Gesamtzahl von Zugriffspfaden Kostenschätzung (elapsed time) Zugriffspfadwahl (kürzeste elapsed time ) Projects 81

82 DB2 for LUW Der access path Der Optimizer und die Suche nach dem access path indexable & not indexable WHERE LASTNAME = 'SMITH' AND FIRSTNME <> 'JOHN' Indexable NOT Indexable 1. indexable predicates : Können passende IX-Einträge finden Können IX-matching predicates werden, abhängig von vorhandenen IX und der Pfadauswahl des Optimizers Begrenzen die range of data, die gelesen wird: Alle anderen Prädikattypen bauen darauf auf. Die Anzahl von matching predicates hängt vom ausgewählten Index ab i.d.r. von den ersten Spalten Mit = oder IN : sobald ein range -Prädikat (oder ein weiteres IN ) verwendet wird, werden alle folgenden Prädikate als non matching gewertet 2. not indexable predicates Können niemals passende IX-Einträge finden Index 1: Firstnme, Lastname WHERE 1 MCOLS AND AND Index 2: Lastname, Firstnme, City LASTNAME = 'SMITH' FIRSTNME LIKE 'J%' 2 MCOLS CITY = 'CHICAGO' 82

83 DB2 for LUW Der access path Tablespace Scan / File Pageset Scan Matching Index Scan (MATCHCOLS > 0 ) IN-List Index Scan Non-Matching Index Scan (MATCHCOLS = 0 ) One-Fetch Index Scan Index Only Access Direkter Zeilenzugriff über eine ROWID-Spalte ( direkt) Multiple Index Scan... Annähernd alle einfachen Zugriffsarten können durch sequential prefetch und/oder list prefetch weiter unterstützt werden... 83

84 DB2 for LUW Der access path Tablespace Scan / File Pageset Scan ein Beispiel Tablespace Scan / File Pageset Scan - Wenn keine Auswahlbedingungen formuliert sind - wenn auf eine interne Workfile oder eine temporäre Tabelle zugegriffen, für die keine Indizes existieren - Wenn kein nutzbarer Index verfügbar ist(where-klausel...) - Wenn ein nutzbarer Index aus Kostengründen nicht eingesetzt wird. Es wird erwartet, dass eine %-ual hohe Anzahl der Gesamtzahl aller Tabellenzeilen ausgefiltert wird ODER ein clustered Index ist nicht mehr optimal organisiert und es wird erwartet, dass eine grössere Zahl von Daten ausgefiltert wird Beispiel: SELECT * FROM mitarbeiter ; IX auf Spalte persnr und abt_nr SELECT... FROM mitarbeiter WHERE einst_dat >

85 DB2 for LUW SQL Tuning & Monitoring Kapitelinhalt Best Practices in einem DWH Umfeld BP - Database Design BP Überlegungen zu Applikationen BP Performance Layer BP - Configuration and Operations DB Design und Objektdefinitionen Denormalisierungsmuster Physisches Design und Datentypen bei DB2 Index Designmuster SQL Tuning Query Design Optimization class und Optimizer SQL EXPLAINs SQL runtime optimization (MQT s, temp Tables, SORTs) Beeinflussen des access plan bei DB2 Zugriffsarten bei DB2 Regeln zu Tabellen- und Index-Design 85

86 DB2 for LUW Regeln zur Verwendung von SQL Index- und Table-Design-Tips Zum Index-Design folgende ergänzenden Empfehlungen: 1. Definieren sie Index TYPE 2: wegen "row level" Locking UR Isolation für den Zugriffspfad wegen paralleler Task-Verarbeitung im Falle von "multiple" Queries wegen konkurrierendem Zugriff auf getrennte logische Partitions 2. Um ROW-Level-Locking nutzen zu können ist zwingend der Indextyp 2 zu erzeugen. Ist beim CREATE- Index keine Typangabe gemacht, so wird er als "default" der Wert genommen. 3. DB2 nutzt keinen Index, wenn ein JOIN einer Tabelle auf sich selbst ( self-referencing ) durchgeführt wird. Das gilt auch für die gleichzeitige Nutzung von mehreren views auf dieselbe Tabelle. 4. Indizes erhöhen die Performance beim Lesen und sichern die Eindeutigkeit von Spaltenwerten ab. 5. Indizes müssen dahingehend überwacht werden, ob sie genutzt werden und ihre Nutzung effizient ist. ABER: Sie verlangsamen Modifikationsoperationen (INSERT, UPDATE, DELETE) und können sogar zu -911 (sqlstate: 40001: Deadlock / timeout ) und -904(sqlstate: 57011: "Resource not available") Fehlern bei Parallelläufen führen. 6. Die Funktion EXPLAIN liefert Informationen über ausgewählte Zugriffspfade, Querykosten, Zugriffsreihenfolge von IX/Tabellen Die Katalog-Tabelle SYSCAT.INDEXES (LAST_USED) gibt Auskunft darüber, ob alle Indizes wie vorgesehen auch genutzt werden. 7. Ein Index sollte gelöscht werden, falls er nicht genutzt wird (db2pd oder LAST_USED in SYSCAT.INDEXES). 8. RUNSTATS ist notwendig, um verlässliche Aussagen durch die EXPLAIN-Funktion zu erhalten und dem optimizer die notwendigen Statistine für den optimalen access path zu liefern 86

87 DB2 for LUW Regeln zur Verwendung von SQL Index- und Table-Design-Tips Zum Index-Design folgende ergänzenden Empfehlungen: 9. REORG sollte regelmäßig durchgeführt werden, abhängig von der Tiefe der Indexstaffelung, der Sequenz der "leaf pages" und der Zersplitterung der Daten. 10. Ein Index kann gelöscht werden, wenn die Tabelle kleiner als 6 "pages" ist. 11. PCTFREE 10 wird empfohlen, wenn häufige Index page splits erwartet werden. 12. Die Werte für PCTFREE können nach dem Laden einer Tabelle modifiziert werden; die neuen Definitionen wirken aber erst nach REORG/RELOAD. 13. Angemessene Nutzung von freiem Speicherplatz führt zu schnellerer Datenreferenz, aber auch zu erhöhten Speicherkosten höherer Anzahl von Index- pages und Index-Ebenen möglicherweise erhöhter Länge von TS Scans. 14. Zusammengesetzte Schlüssel sollten möglichst Eindeutigkeit garantieren. 15. Eine variable, deren Definition nicht zu den Attributen der zugehörigen Spalten paßt, verhindert den Indexzugriff für betroffene Spalten. 16. Indizes über Spalten, die länger als 40 Bytes sind, sollten vermieden werden. 17. Die Kardinalität einer Spalte beeinflußt die Indexnutzung primär. 18. Spalten, die häufig modifiziert werden müssen, sollten in möglichst wenigen Indizes vorkommen. 87

88 DB2 for LUW Regeln zur Verwendung von SQL Index- und Table-Design-Tips Zum Index-Design folgende ergänzenden Empfehlungen: 19. Ein clustering - Index sollte immer dann definiert werden, wenn Daten häufig in EINER BESTIMMTEN Reihenfolge benötigt werden. 20. Der zuerst definierte Index (chronologisch) wird automatisch als "CLUSTER-Index genutzt, falls kein CLUSTER-Index explizit definiert wurde. 21. Ein matching Index ist anderen Indexstrukturen immer vorzuziehen. 22. Die nächstbeste Alternative ist eine non-matching Index Suche ohne Datenzugriff. 23. TS- scans sind normalerweise die am wenigsten effiziente Zugriffsstrategie, außer PREFETCH kann genutzt werden und eine (oder mehr) Zeilen pro (mindestens) zwei Daten- pages können gelesen werden. 24. Der Prädikat-Typ des SQL- requests beeinflußt die Index-Nutzung stark. Er sollte möglichst einschränkend auf die Ergebnismenge wirken 25. Wenn VARCHAR-Spalten nicht benötigt werden, dann verzichte man auf sie. VARCHARs im Index werden mit Blanks auf ihre maximale Länge aufgefüllt 88

89 DB2 for LUW Regeln zur Verwendung von SQL Index- und Table-Design-Tips Tipps zum Table-Design sind im Folgenden zusammengefasst. Alle Punkte sind nicht als Vorschriften zu verstehen, sondern als Möglichkeiten. Die Kombination aus mehreren (einfachen) Maßnahmen kann das Vorgehen entsprechend komplex und nicht mehr trivial erscheinen lassen. 1. Wägen Sie beim physischen Design ab zwischen "UPDATE-Overhead" Performance-Verluste beim Lesen durch Normalisierung Nicht IMMER ist REDUNDANZ schlecht! 2. Benutzen Sie "Views /MQT s, falls abgeleitete Werte NICHT STÄNDIG und aktuell gebraucht werden ( Jahressummen, Vertriebsvorgaben, Quartalszahlen...) 3. Jede Tabelle sollte mindestens EINEN UNIQUE INDEX bzw. PRIMARY KEY haben. Der PK Constraint verlangt, dass PK's UNIQUE definiert werden. 4. "FOREIGN KEYS" werden genutzt, um Beziehungen zwischen DB2-Tabellen darzustellen. 5. FK's müssen nicht, sollten aber immer indiziert sein. Sie können NULL-Werte enthalten. 6. Wenn FK's definiert sind, sollten sie mit einem sprechenden (nicht vom System generierten) Namen versehen werden. Dies hilft später bei der Fehleridentifikation in Rl-Situationen (-53x). Zudem können über diese Namen DROP's von FK's und gezielte Queries auf den Katalog durchgeführt werden. 7. JOlN-Funktionen werden über die Nutzung von Indizes beschleunigt: PK FK -Beziehungen. 8. Die "record size" bei DB2 kann niemals die über die Bufferpools vorgegebene "page size" überschreiten (z.b. 4K, 8K ) 89

90 DB2 for LUW Regeln zur Verwendung von SQL Index- und Table-Design-Tips 9. "rows" sollten nicht kürzer als 24 Bytes sein (!) und wenn irgendwie möglich mit fester Länge definiert werden. 10. Spalten, die miteinander verglichen werden, sollten dieselbe Länge und denselben DATENTYP haben 11. VARCHAR-Spalten, die nicht länger als 40 Bytes sind, sollten als "fixed" CHAR definiert werden. 12. VARCHAR-Felder sollten nicht größer als nötig definiert werden. 13. Man vermeide die Definition von VARCHAR-Feldern, wenn die Variation der Feldlänge konstant und vorhersehbar ist. 14. LONG VARCHAR-Definitionen sind zu vermeiden. keine Nutzung von ALTER TABLE nur BP32K nur 1 Zeile pro "page" usw. 15. Alle xlob-spaltendefinitionen sollten vermieden werden. 16. Bei der Definition numerischer Datenfelder beachte man: SQLCODE "arithmetic overflow" kann auftreten 17. Felder mit variabler Länge (NULL oder VARCHAR) sollten möglichst am Ende einer Tabelle definiert werden. 18. Bei der Nutzung von ALTER und ADD <column> mit Feldern fixer Länge, werden diese bis zum REORG wie variable Felder behandelt. 19. Häufig genutzte (inhaltsstabile) Spalten gehören an den Anfang der Tabelle.. 90

91 DB2 for LUW Regeln zur Verwendung von SQL Index- und Table-Design-Tips 20. NOT NULL WITH DEFAULT sollte bei noch unbestimmter Nutzung des Feldes in der Zukunft gesetzt werden. 21. Man beachte, dass eine CREATE-Anweisung nicht gleichzeitig mit einem DB2-"utility", das einen anderen TS in derselben DATABASE nutzt, ablaufen kann. 22. CHECK-Constraints verringern den Aufwand in Programmen bezüglich der Plausibilitätsprüfungen, führen aber zu erhöhtem Aufwand in der Administration(LOAD, ALTER ). 23. Ist ein "record" nur geringfügig größer als eine ½ 4-K Page (> 2036), so entsteht enorme Platzverschwendung. 24. NULL-Felder sollten soweit irgendwie möglich vermieden werden: Alternative: NOT NULL WITH DEFAULT bzw. NOT NULL 25. Bei der Verwendung von NULL-Werten gilt es folgendes zu beachten: NULL erfüllt niemals einen mathematischen Vergleich bei JOIN - Operationen über Nullfähige Spalten sollte die OUTER JOIN - Formulierung verwendet werden. 91

92 DB2 for LUW Regeln zur Verwendung von SQL Für Automatismen Feaks DO NOT TURN ON AUTOMATIC STMM Tuning Until AFTER Physical Design Flaws are Cured! Wenn kostspielige scans oder sorts in der Last des Rechners existieren, können die wechselnden Anforderungen an den memory STMM zur Verzweiflung treiben und alles mündet in Performance Problemen. STMM sollte für das fine tuning einer database genutzt werden nachdem physische Design-Mängel behoben bzw. entfernt wurden. Nach dem Testen des fine tunings mit STMM shut it off. 92

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo.

Mengenvergleiche: Alle Konten außer das, mit dem größten Saldo. Mengenvergleiche: Mehr Möglichkeiten als der in-operator bietet der θany und der θall-operator, also der Vergleich mit irgendeinem oder jedem Tupel der Unteranfrage. Alle Konten außer das, mit dem größten

Mehr

SQL-Optimizer und Optimierung bei DB2

SQL-Optimizer und Optimierung bei DB2 SQL-Optimizer und Optimierung bei DB2 S.K. Consulting GmbH, München DB2_SQL_PERF - 1 - Inhaltsverzeichnis 1. Optimierung bei DB2 1.1 Einflussfaktoren auf die Entscheidung des Optimizers 1.2 Übersicht über

Mehr

IBM DB2 für Linux/Unix/Windows Monitoring und Tuning

IBM DB2 für Linux/Unix/Windows Monitoring und Tuning IBM DB2 für Linux/Unix/Windows Monitoring und Tuning Seminarunterlage Version: 4.05 Version 4.05 vom 9. Februar 2015 Dieses Dokument wird durch die veröffentlicht.. Alle Rechte vorbehalten. Alle Produkt-

Mehr

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER INHALTSVERZEICHNIS 1. Datenbanken 2. SQL 1.1 Sinn und Zweck 1.2 Definition 1.3 Modelle 1.4 Relationales Datenbankmodell 2.1 Definition 2.2 Befehle 3.

Mehr

SQL Performance - Tips Do's & Don'ts

SQL Performance - Tips Do's & Don'ts SQL Performance - Tips Do's & Don'ts S.K. Consulting GmbH, München DB2_SQL_PERF - 1 - Inhaltsverzeichnis I. Richtlinien bei der Verwendung von SQL 1.1. In Programmen "verbotene" SQL- Anweisungen 1.2 SQL

Mehr

Informatik 12 Datenbanken SQL-Einführung

Informatik 12 Datenbanken SQL-Einführung Informatik 12 Datenbanken SQL-Einführung Gierhardt Vorbemerkungen Bisher haben wir Datenbanken nur über einzelne Tabellen kennen gelernt. Stehen mehrere Tabellen in gewissen Beziehungen zur Beschreibung

Mehr

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem Fachbericht zum Thema: Anforderungen an ein Datenbanksystem von André Franken 1 Inhaltsverzeichnis 1 Inhaltsverzeichnis 1 2 Einführung 2 2.1 Gründe für den Einsatz von DB-Systemen 2 2.2 Definition: Datenbank

Mehr

Urs Meier (urs.meier@trivadis.com) Art der Info Technical Info (Februar 2002) Aus unserer Projekterfahrung und Forschung

Urs Meier (urs.meier@trivadis.com) Art der Info Technical Info (Februar 2002) Aus unserer Projekterfahrung und Forschung Betrifft Optimizer Autor Urs Meier (urs.meier@trivadis.com) Art der Info Technical Info (Februar 2002) Quelle Aus unserer Projekterfahrung und Forschung Einführung Mit jedem Oracle Release nimmt die Anzahl

Mehr

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar Qt-Seminar Dienstag, 10.2.2009 SQL ist......die Abkürzung für Structured Query Language (früher sequel für Structured English Query Language )...ein ISO und ANSI Standard (aktuell SQL:2008)...eine Befehls-

Mehr

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin PhpMyAdmin = grafsches Tool zur Verwaltung von MySQL-Datenbanken Datenbanken erzeugen und löschen Tabellen und Spalten einfügen,

Mehr

OPERATIONEN AUF EINER DATENBANK

OPERATIONEN AUF EINER DATENBANK Einführung 1 OPERATIONEN AUF EINER DATENBANK Ein Benutzer stellt eine Anfrage: Die Benutzer einer Datenbank können meist sowohl interaktiv als auch über Anwendungen Anfragen an eine Datenbank stellen:

Mehr

Ein Ausflug zu ACCESS

Ein Ausflug zu ACCESS Ein Ausflug zu ACCESS Die folgenden Folien zeigen beispielhaft, wie man sein DB- Wissen auf ACCESS übertragen kann betrachtet wird ACCESS 2002, da gerade im Bereich der Nutzung von SQL hier einiges nachgearbeitet

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt Inhaltsverzeichnis Aufgabe... 1 Allgemein... 1 Active Directory... 1 Konfiguration... 2 Benutzer erstellen... 3 Eigenes Verzeichnis erstellen... 3 Benutzerkonto erstellen... 3 Profil einrichten... 5 Berechtigungen

Mehr

SQL: statische Integrität

SQL: statische Integrität SQL: statische Integrität.1 SQL: statische Integrität Im allgemeinen sind nur solche Instanzen einer Datenbank erlaubt, deren Relationen die der Datenbank bekannten Integritätsbedingungen erfüllen. Integritätsbedingungen

Mehr

Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me

Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me Einrichten einer Festplatte mit FDISK unter Windows 95/98/98SE/Me Bevor Sie die Platte zum ersten Mal benutzen können, muss sie noch partitioniert und formatiert werden! Vorher zeigt sich die Festplatte

Mehr

7. Übung - Datenbanken

7. Übung - Datenbanken 7. Übung - Datenbanken Informatik I für Verkehrsingenieure Aufgaben inkl. Beispiellösungen 1. Aufgabe: DBS a Was ist die Kernaufgabe von Datenbanksystemen? b Beschreiben Sie kurz die Abstraktionsebenen

Mehr

Cassandra Query Language (CQL)

Cassandra Query Language (CQL) Cassandra Query Language (CQL) Seminar: NoSQL Wintersemester 2013/2014 Cassandra Zwischenpräsentation 1 Gliederung Basic facts Datentypen DDL/DML ähnlich zu SQL Besonderheiten Basic facts CQL kurz für

Mehr

Datenbanken II Speicherung und Verarbeitung großer Objekte (Large Objects [LOBs])

Datenbanken II Speicherung und Verarbeitung großer Objekte (Large Objects [LOBs]) Datenbanken II Speicherung und Verarbeitung großer Objekte (Large Objects [LOBs]) Hochschule für Technik, Wirtschaft und Kultur Leipzig 06.06.2008 Datenbanken II,Speicherung und Verarbeitung großer Objekte

Mehr

Software Engineering Klassendiagramme Assoziationen

Software Engineering Klassendiagramme Assoziationen Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen

Mehr

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze

Ihre Interessentendatensätze bei inobroker. 1. Interessentendatensätze Ihre Interessentendatensätze bei inobroker Wenn Sie oder Ihre Kunden die Prozesse von inobroker nutzen, werden Interessentendatensätze erzeugt. Diese können Sie direkt über inobroker bearbeiten oder mit

Mehr

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten

Das große ElterngeldPlus 1x1. Alles über das ElterngeldPlus. Wer kann ElterngeldPlus beantragen? ElterngeldPlus verstehen ein paar einleitende Fakten Das große x -4 Alles über das Wer kann beantragen? Generell kann jeder beantragen! Eltern (Mütter UND Väter), die schon während ihrer Elternzeit wieder in Teilzeit arbeiten möchten. Eltern, die während

Mehr

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.

Mehr

Preisvergleich ProfitBricks - Amazon Web Services M3 Instanz

Preisvergleich ProfitBricks - Amazon Web Services M3 Instanz Preisvergleich - Amazon Web Services M3 Instanz Stand Preisliste : 10.04.2014 www.profitbricks.de Stand Preisliste : 10.04.2014 Hotline: 0800 22 44 66 8 product@profitbricks.com Vorwort Preisvergleiche

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion

Mehr

Artikel Schnittstelle über CSV

Artikel Schnittstelle über CSV Artikel Schnittstelle über CSV Sie können Artikeldaten aus Ihrem EDV System in das NCFOX importieren, dies geschieht durch eine CSV Schnittstelle. Dies hat mehrere Vorteile: Zeitersparnis, die Karteikarte

Mehr

SQL - Übungen Bearbeitung der Datenbank Personal (1)

SQL - Übungen Bearbeitung der Datenbank Personal (1) Bearbeitung der Datenbank Personal (1) 1. Abfragen einer einzigen Tabelle 1.1. Zeigen Sie alle Informationen an, die über die Kinder der Mitarbeiter gespeichert sind. 1.2. Zeigen Sie aus der Tabelle stelle

Mehr

Installation SQL- Server 2012 Single Node

Installation SQL- Server 2012 Single Node Installation SQL- Server 2012 Single Node Dies ist eine Installationsanleitung für den neuen SQL Server 2012. Es beschreibt eine Single Node Installation auf einem virtuellen Windows Server 2008 R2 mit

Mehr

Data Cube. Aggregation in SQL. Beispiel: Autoverkäufe. On-line Analytical Processing (OLAP) 1. Einführung. 2. Aggregation in SQL, GROUP BY

Data Cube. Aggregation in SQL. Beispiel: Autoverkäufe. On-line Analytical Processing (OLAP) 1. Einführung. 2. Aggregation in SQL, GROUP BY Data Cube On-line Analytical Processing (OLAP). Einführung Ziel: Auffinden interessanter Muster in großen Datenmengen 2. Aggregation in SQL, GROUP BY 3. Probleme mit GROUP BY 4. Der Cube-Operator! Formulierung

Mehr

DB2 Codepage Umstellung

DB2 Codepage Umstellung DB2 Codepage Umstellung Was bei einer Umstellung auf Unicode zu beachten ist Torsten Röber, SW Support Specialist DB2 April 2015 Agenda Warum Unicode? Unicode Implementierung in DB2/LUW Umstellung einer

Mehr

7 Die Reorganisation von DB2

7 Die Reorganisation von DB2 Ab und an sollte eine Tabelle reorganisiert werden. Besonders, nachdem größere Datenmengen eingefügt oder gelöscht wurden, muß über eine Reorganisation nachgedacht werden. Eine optimale Performance ist

Mehr

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER

Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER Abamsoft Finos im Zusammenspiel mit shop to date von DATA BECKER Abamsoft Finos in Verbindung mit der Webshopanbindung wurde speziell auf die Shop-Software shop to date von DATA BECKER abgestimmt. Mit

Mehr

Die bisher bereits bekannten Aggregatsfunktionen MIN, MAX, SUM, AVG, COUNT, VARIANCE und STDDEV wurden um FIRST und LAST erweitert.

Die bisher bereits bekannten Aggregatsfunktionen MIN, MAX, SUM, AVG, COUNT, VARIANCE und STDDEV wurden um FIRST und LAST erweitert. Betrifft Autor FIRST, LAST Markus Jägle (markus.jaegle@trivadis.com) Art der Info Technische Background Info (April 2002) Quelle Aus dem NF9i-Kurs, NF9i-Techno-Circle der Trivadis und Oracle9i Data Warehousing

Mehr

Oracle-Statistiken im Data Warehouse effizient nutzen

Oracle-Statistiken im Data Warehouse effizient nutzen Oracle-Statistiken im Data Warehouse effizient nutzen Reinhard Mense ARETO Consulting Köln Schlüsselworte: DWH, Data Warehouse, Statistiken, Optimizer, Performance, Laufzeiten Einleitung Für die performante

Mehr

OP-LOG www.op-log.de

OP-LOG www.op-log.de Verwendung von Microsoft SQL Server, Seite 1/18 OP-LOG www.op-log.de Anleitung: Verwendung von Microsoft SQL Server 2005 Stand Mai 2010 1 Ich-lese-keine-Anleitungen 'Verwendung von Microsoft SQL Server

Mehr

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken.

In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access. Die Grundlagen der Datenbanken. In diesem Thema lernen wir die Grundlagen der Datenbanken kennen und werden diese lernen einzusetzen. Access Die Grundlagen der Datenbanken kurspc15 Inhaltsverzeichnis Access... Fehler! Textmarke nicht

Mehr

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage Inhaltsverzeichnis 1. Anmeldung... 2 1.1 Startbildschirm... 3 2. Die PDF-Dateien hochladen... 4 2.1 Neue PDF-Datei erstellen... 5 3. Obelix-Datei

Mehr

Index- und Zugriffsstrukturen für. Holger Brämer, 05IND-P

Index- und Zugriffsstrukturen für. Holger Brämer, 05IND-P Index- und Zugriffsstrukturen für Data Warehousing Holger Brämer, 05IND-P Index- und Zugriffstrukturen für Data Warehousing Materialisierte Sichten Bitmap-Indexe Verbundindexe Materialisierte Sichten gehören

Mehr

Excel Pivot-Tabellen 2010 effektiv

Excel Pivot-Tabellen 2010 effektiv 7.2 Berechnete Felder Falls in der Datenquelle die Zahlen nicht in der Form vorliegen wie Sie diese benötigen, können Sie die gewünschten Ergebnisse mit Formeln berechnen. Dazu erzeugen Sie ein berechnetes

Mehr

Hilfe zur Dokumentenverwaltung

Hilfe zur Dokumentenverwaltung Hilfe zur Dokumentenverwaltung Die Dokumentenverwaltung von Coffee-CRM ist sehr mächtig und umfangreich, aber keine Angst die Bedienung ist kinderleicht. Im Gegensatz zur Foto Galeria können Dokumente

Mehr

Datenbanken Kapitel 2

Datenbanken Kapitel 2 Datenbanken Kapitel 2 1 Eine existierende Datenbank öffnen Eine Datenbank, die mit Microsoft Access erschaffen wurde, kann mit dem gleichen Programm auch wieder geladen werden: Die einfachste Methode ist,

Mehr

FIS: Projektdaten auf den Internetseiten ausgeben

FIS: Projektdaten auf den Internetseiten ausgeben Rechenzentrum FIS: Projektdaten auf den Internetseiten ausgeben Ist ein Forschungsprojekt im Forschungsinformationssystem (FIS) erfasst und für die Veröffentlichung freigegeben, können Sie einige Daten

Mehr

PRAXISBUTLER ANPASSUNG DER VORLAGEN

PRAXISBUTLER ANPASSUNG DER VORLAGEN Praxisbutler Anpassung der Vorlagen 1 PRAXISBUTLER ANPASSUNG DER VORLAGEN Die Vorlagen werden hauptsächlich in den Bereichen Klienten und Fakturierung benutzt. Die Anpassung dieser Vorlagen ist wichtig,

Mehr

MIN oder MAX Bildung per B*Tree Index Hint

MIN oder MAX Bildung per B*Tree Index Hint E-Mail: rainer@lambertz-c.de Internet: http://www.lambertz-c.de MIN oder MAX Bildung per B*Tree Index Hint Zugegeben, der Trick Min- oder Maximalwerte per Index Hint zu ermitteln ist nicht neu. Gewöhnlich

Mehr

MS SQL Server: Index Management. Stephan Arenswald 10. Juli 2008

MS SQL Server: Index Management. Stephan Arenswald 10. Juli 2008 MS SQL Server: Index Management Stephan Arenswald 10. Juli 2008 Agenda 1. Einführung 2. Grundlagen Tabellen 3. Grundlagen Indexe 4. Indextypen 5. Index-Erstellung 6. Indexe und Constraints 7. Und Weiter...?

Mehr

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Seite erstellen Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken. Es öffnet sich die Eingabe Seite um eine neue Seite zu erstellen. Seiten Titel festlegen Den neuen

Mehr

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Datenbanksysteme I

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Datenbanksysteme I SQL SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R VII-1 Beispielrelationen Filiale ( Name Leiter Stadt Einlagen ) Konto ( KontoNr KundenNr FilialName Saldo ) Kredit

Mehr

DB2 V8 Migration. Wie kommen wir von V7 nach V8? Feb 2005 1

DB2 V8 Migration. Wie kommen wir von V7 nach V8? Feb 2005 1 Wie kommen wir von V7 nach? 1 8.1 Voraussetzungen Review der verfügbaren Dokumentation - Präventive Planung des Service für eine letze Maintenance - DB2 Version 8 Installation Guide - DB2 Version 8 Program

Mehr

Hilfe zur Urlaubsplanung und Zeiterfassung

Hilfe zur Urlaubsplanung und Zeiterfassung Hilfe zur Urlaubsplanung und Zeiterfassung Urlaubs- und Arbeitsplanung: Mit der Urlaubs- und Arbeitsplanung kann jeder Mitarbeiter in Coffee seine Zeiten eintragen. Die Eintragung kann mit dem Status anfragen,

Mehr

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken Dateiname: ecdl5_01_00_documentation_standard.doc Speicherdatum: 14.02.2005 ECDL 2003 Basic Modul 5 Datenbank - Grundlagen

Mehr

Kurzanleitung fu r Clubbeauftragte zur Pflege der Mitgliederdaten im Mitgliederbereich

Kurzanleitung fu r Clubbeauftragte zur Pflege der Mitgliederdaten im Mitgliederbereich Kurzanleitung fu r Clubbeauftragte zur Pflege der Mitgliederdaten im Mitgliederbereich Mitgliederbereich (Version 1.0) Bitte loggen Sie sich in den Mitgliederbereich mit den Ihnen bekannten Zugangsdaten

Mehr

Zahlenwinkel: Forscherkarte 1. alleine. Zahlenwinkel: Forschertipp 1

Zahlenwinkel: Forscherkarte 1. alleine. Zahlenwinkel: Forschertipp 1 Zahlenwinkel: Forscherkarte 1 alleine Tipp 1 Lege die Ziffern von 1 bis 9 so in den Zahlenwinkel, dass jeder Arm des Zahlenwinkels zusammengezählt das gleiche Ergebnis ergibt! Finde möglichst viele verschiedene

Mehr

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers

Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers Ist Excel das richtige Tool für FMEA? Steve Murphy, Marc Schaeffers Ist Excel das richtige Tool für FMEA? Einleitung Wenn in einem Unternehmen FMEA eingeführt wird, fangen die meisten sofort damit an,

Mehr

SANDBOXIE konfigurieren

SANDBOXIE konfigurieren SANDBOXIE konfigurieren für Webbrowser und E-Mail-Programme Dies ist eine kurze Anleitung für die grundlegenden folgender Programme: Webbrowser: Internet Explorer, Mozilla Firefox und Opera E-Mail-Programme:

Mehr

Arbeiten mit Standorten und Freimeldungen

Arbeiten mit Standorten und Freimeldungen Lavid-F.I.S. Logistik Arbeiten mit Standorten und Dauner Str. 2, D-4236 Mönchengladbach, Tel. 0266-97022-0, Fax -5, Email: info@lavid-software.net . Inhalt. Inhalt... 2 2. Verwendbar für:... 2 3. Aufgabe...

Mehr

3. GLIEDERUNG. Aufgabe:

3. GLIEDERUNG. Aufgabe: 3. GLIEDERUNG Aufgabe: In der Praxis ist es für einen Ausdruck, der nicht alle Detaildaten enthält, häufig notwendig, Zeilen oder Spalten einer Tabelle auszublenden. Auch eine übersichtlichere Darstellung

Mehr

Fachhochschule Deggendorf Platzziffer:...

Fachhochschule Deggendorf Platzziffer:... Sommersemester 2008 Zahl der Blätter: 9 Fachbereich: Betriebswirtschaft WI Bachelor Hilfsmittel: alles ohne Computer Zeit: 90 Minuten 1 Betrachten Sie die drei markierten Zeilen. 1. Angenommen Sie hätten

Mehr

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL

Übung Datenbanken in der Praxis. Datenmodifikation mit SQL Datenmodifikation mit SQL Folie 45 SQL - Datenmodifikation Einfügen INSERT INTO Relation [(Attribut, Attribut,...)] VALUES (Wert, Wert,...) INSERT INTO Relation [(Attribut, Attribut,...)] SFW-Anfrage Ändern

Mehr

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter 2 Inhaltsverzeichnis 1 Web-Kürzel 4 1.1 Einführung.......................................... 4 1.2 Web-Kürzel.........................................

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Windows Server 2012 R2 Essentials & Hyper-V

Windows Server 2012 R2 Essentials & Hyper-V erklärt: Windows Server 2012 R2 Essentials & Hyper-V Windows Server 2012 R2 Essentials bietet gegenüber der Vorgängerversion die Möglichkeit, mit den Boardmitteln den Windows Server 2012 R2 Essentials

Mehr

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004) Nachtrag: Farben Farbblindheit (Light und Bartlein 2004) 1 Vorgeschlagene Farbskalen (Light and Bartlein 2004) Farbkodierung metrisch skalierter Daten Unterscheide: 1. Sequential Data (ohne Betonung der

Mehr

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang sysplus.ch outlook - mail-grundlagen Seite 1/8 Outlook Mail-Grundlagen Posteingang Es gibt verschiedene Möglichkeiten, um zum Posteingang zu gelangen. Man kann links im Outlook-Fenster auf die Schaltfläche

Mehr

Abschluss Version 1.0

Abschluss Version 1.0 Beschreibung Der Abschluss wird normalerweise nur einmal jährlich durchgeführt. Dieses Tech-Note soll helfen, diesen doch seltenen aber periodisch notwendigen Vorgang problemlos durchzuführen. Abschlussvarianten

Mehr

3 Windows als Storage-Zentrale

3 Windows als Storage-Zentrale 3 Windows als Storage-Zentrale Windows als zentrale Datenspeichereinheit punktet gegenüber anderen Lösungen vor allem bei der Integration in vorhandene Unternehmensnetze sowie bei der Administration. Dabei

Mehr

Corporate Actions in epoca

Corporate Actions in epoca in epoca Einführung Die können in Bezug auf die Buchhaltung zu den komplexesten und anspruchsvollsten Transaktionen gehören. Sie können den Transfer eines Teils oder des ganzen Buchwerts einer Position

Mehr

Bedienungsanleitung. Stand: 26.05.2011. Copyright 2011 by GEVITAS GmbH www.gevitas.de

Bedienungsanleitung. Stand: 26.05.2011. Copyright 2011 by GEVITAS GmbH www.gevitas.de GEVITAS-Sync Bedienungsanleitung Stand: 26.05.2011 Copyright 2011 by GEVITAS GmbH www.gevitas.de Inhalt 1. Einleitung... 3 1.1. Installation... 3 1.2. Zugriffsrechte... 3 1.3. Starten... 4 1.4. Die Menü-Leiste...

Mehr

SQL structured query language

SQL structured query language Umfangreiche Datenmengen werden üblicherweise in relationalen Datenbank-Systemen (RDBMS) gespeichert Logische Struktur der Datenbank wird mittels Entity/Realtionship-Diagrammen dargestellt structured query

Mehr

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können. Tutorial: Wie erfasse ich einen Termin? In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können. Neben den allgemeinen Angaben zu einem

Mehr

Vorlesung Dokumentation und Datenbanken Klausur

Vorlesung Dokumentation und Datenbanken Klausur Dr. Stefan Brass 5. Februar 2002 Institut für Informatik Universität Giessen Vorlesung Dokumentation und Datenbanken Klausur Name: Geburtsdatum: Geburtsort: (Diese Daten werden zur Ausstellung des Leistungsnachweises

Mehr

Inhaltsverzeichnis. Installationsübersicht. A. Installationsübersicht

Inhaltsverzeichnis. Installationsübersicht. A. Installationsübersicht Inhaltsverzeichnis A. Installationsübersicht B. und Optimierungsbereiche B.1 Hardware B.2 OperatingSystem Z/OS B.3 Databasemanagementsystem DB2 B.4 Applikation C. Organisation BSS_Chart-library 1 Installationsübersicht

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

Arbeiten mit UMLed und Delphi

Arbeiten mit UMLed und Delphi Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf

Mehr

Avira Server Security Produktupdates. Best Practice

Avira Server Security Produktupdates. Best Practice Avira Server Security Produktupdates Best Practice Inhaltsverzeichnis 1. Was ist Avira Server Security?... 3 2. Wo kann Avira Server Security sonst gefunden werden?... 3 3. Was ist der Unterschied zwischen

Mehr

Merchant Center und Adwords Produkterweiterung mit Filter

Merchant Center und Adwords Produkterweiterung mit Filter Letzte Aktualisierung: 02.02.2012 Merchant Center und Adwords Produkterweiterung mit Filter 1. In den USA kann man die Produkte selektieren (filtern), die zu einer Adwords- Anzeige als Produkterweiterung

Mehr

Relationales Modell: SQL-DDL. SQL als Definitionssprache. 7. Datenbankdefinitionssprachen. Anforderungen an eine relationale DDL

Relationales Modell: SQL-DDL. SQL als Definitionssprache. 7. Datenbankdefinitionssprachen. Anforderungen an eine relationale DDL Relationales Modell: SQLDDL SQL als Definitionssprache SQLDDL umfaßt alle Klauseln von SQL, die mit Definition von Typen Wertebereichen Relationenschemata Integritätsbedingungen zu tun haben Externe Ebene

Mehr

MailUtilities: Remote Deployment - Einführung

MailUtilities: Remote Deployment - Einführung MailUtilities: Remote Deployment - Einführung Zielsetzung Die Aufgabe von Remote Deployment adressiert zwei Szenarien: 1. Konfiguration der MailUtilities von einer Workstation aus, damit man das Control

Mehr

Step by Step Webserver unter Windows Server 2003. von Christian Bartl

Step by Step Webserver unter Windows Server 2003. von Christian Bartl Step by Step Webserver unter Windows Server 2003 von Webserver unter Windows Server 2003 Um den WWW-Server-Dienst IIS (Internet Information Service) zu nutzen muss dieser zunächst installiert werden (wird

Mehr

Austausch- bzw. Übergangsprozesse und Gleichgewichtsverteilungen

Austausch- bzw. Übergangsprozesse und Gleichgewichtsverteilungen Austausch- bzw. Übergangsrozesse und Gleichgewichtsverteilungen Wir betrachten ein System mit verschiedenen Zuständen, zwischen denen ein Austausch stattfinden kann. Etwa soziale Schichten in einer Gesellschaft:

Mehr

Oracle 9i Einführung Performance Tuning

Oracle 9i Einführung Performance Tuning Kurs Oracle 9i Einführung Performance Tuning Teil 13 Cluster Timo Meyer Wintersemester 2005 / 2006 Seite 1 von 14 Seite 1 von 14 1. Anordnung von Zeilen in einer Tabelle 2. Einführung 3. Cluster 4. Typen

Mehr

... Kontrolldatei administrieren

... Kontrolldatei administrieren 6... Kontrolldatei administrieren Lektion 6: Kontrolldatei administrieren Ziele Ziele Nach dieser Lektion sollten Sie Folgendes können: Arbeiten mit der Kontrolldatei erklären Inhalt der Kontrolldatei

Mehr

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung Anleitung zur Daten zur Datensicherung und Datenrücksicherung Datensicherung Es gibt drei Möglichkeiten der Datensicherung. Zwei davon sind in Ges eingebaut, die dritte ist eine manuelle Möglichkeit. In

Mehr

1 Einleitung. Lernziele. Symbolleiste für den Schnellzugriff anpassen. Notizenseiten drucken. eine Präsentation abwärtskompatibel speichern

1 Einleitung. Lernziele. Symbolleiste für den Schnellzugriff anpassen. Notizenseiten drucken. eine Präsentation abwärtskompatibel speichern 1 Einleitung Lernziele Symbolleiste für den Schnellzugriff anpassen Notizenseiten drucken eine Präsentation abwärtskompatibel speichern eine Präsentation auf CD oder USB-Stick speichern Lerndauer 4 Minuten

Mehr

Archiv - Berechtigungen

Archiv - Berechtigungen Archiv - Berechtigungen - 1 Inhaltsverzeichnis 1. Grunddefinitionen...3 1.1. Mögliche Definitionen...3 1.1.1. Programme...3 1.1.2. Prinzipale...3 1.1.3 Archivzugriff...3 1.2. Leserichtung...3 1.2.1. Ordnerbezogen...3

Mehr

Alerts für Microsoft CRM 4.0

Alerts für Microsoft CRM 4.0 Alerts für Microsoft CRM 4.0 Benutzerhandbuch Der Inhalt des Dokuments ist Änderungen vorbehalten. Microsoft und Microsoft CRM sind registrierte Markenzeichen von Microsoft Inc. Alle weiteren erwähnten

Mehr

4. BEZIEHUNGEN ZWISCHEN TABELLEN

4. BEZIEHUNGEN ZWISCHEN TABELLEN 4. BEZIEHUNGEN ZWISCHEN TABELLEN Zwischen Tabellen können in MS Access Beziehungen bestehen. Durch das Verwenden von Tabellen, die zueinander in Beziehung stehen, können Sie Folgendes erreichen: Die Größe

Mehr

Konfiguration der tiptel Yeastar MyPBX IP-Telefonanlagen mit peoplefone

Konfiguration der tiptel Yeastar MyPBX IP-Telefonanlagen mit peoplefone Konfiguration der tiptel Yeastar MyPBX IP-Telefonanlagen mit peoplefone Stand 09.09.2015 Allgemeines Diese Anleitung beschreibt die Einrichtung der MyPBX IP-Telefonanlagen des Herstellers Yeastar mit den

Mehr

Proxy. Krishna Tateneni Übersetzer: Stefan Winter

Proxy. Krishna Tateneni Übersetzer: Stefan Winter Krishna Tateneni Übersetzer: Stefan Winter 2 Inhaltsverzeichnis 1 Proxy-Server 4 1.1 Einführung.......................................... 4 1.2 Benutzung.......................................... 4 3 1

Mehr

Beheben von verlorenen Verknüpfungen 20.06.2005

Beheben von verlorenen Verknüpfungen 20.06.2005 Vor folgender Situation ist sicher jeder Solid Edge-Anwender beim Öffnen von Baugruppen oder Drafts schon einmal gestanden: Die Ursache dafür kann sein: Die Dateien wurden über den Explorer umbenannt:

Mehr

Oracle: Abstrakte Datentypen:

Oracle: Abstrakte Datentypen: Oracle: Abstrakte Datentypen: Oracle bietet zwei mögliche Arten um abstrakte Datentypen zu implementieren: Varying Array Nested Table Varying Array (kunde) kdnr kdname gekaufteart 1 Mustermann 1 4 5 8

Mehr

Beispiel 1: Filmdatenbank

Beispiel 1: Filmdatenbank Beispiel 1: Filmdatenbank Die Filmdatenbank hat drei Tabellen (ACTOR, MOVIE, PLAYED) Aufgabe 1: Erstelle mit Hilfe der SQL-DDL die drei Tabellen und die Datenbank (MOVIEDB) ACTOR (ActorID, Name, Birthday,

Mehr

ecaros2 - Accountmanager

ecaros2 - Accountmanager ecaros2 - Accountmanager procar informatik AG 1 Stand: FS 09/2012 Inhaltsverzeichnis 1 Aufruf des ecaros2-accountmanager...3 2 Bedienung Accountmanager...4 procar informatik AG 2 Stand: FS 09/2012 1 Aufruf

Mehr

Bilder Schärfen und Rauschen entfernen

Bilder Schärfen und Rauschen entfernen Bilder Schärfen und Rauschen entfernen Um alte Bilder, so wie die von der Olympus Camedia 840 L noch dazu zu bewegen, Farben froh und frisch daherzukommen, bedarf es einiger Arbeit und die habe ich hier

Mehr

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Suche schlecht beschriftete Bilder mit Eigenen Abfragen Suche schlecht beschriftete Bilder mit Eigenen Abfragen Ist die Bilderdatenbank über einen längeren Zeitraum in Benutzung, so steigt die Wahrscheinlichkeit für schlecht beschriftete Bilder 1. Insbesondere

Mehr

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung

M. Graefenhan 2000-12-07. Übungen zu C. Blatt 3. Musterlösung M. Graefenhan 2000-12-07 Aufgabe Lösungsweg Übungen zu C Blatt 3 Musterlösung Schreiben Sie ein Programm, das die Häufigkeit von Zeichen in einem eingelesenen String feststellt. Benutzen Sie dazu ein zweidimensionales

Mehr

Carl-Engler-Schule Karlsruhe Datenbank 1 (5)

Carl-Engler-Schule Karlsruhe Datenbank 1 (5) Carl-Engler-Schule Karlsruhe Datenbank 1 (5) Informationen zur Datenbank 1. Definition 1.1 Datenbank-Basis Eine Datenbank-Basis ist eine Sammlung von Informationen über Objekte (z.b Musikstücke, Einwohner,

Mehr

Cookies. Krishna Tateneni Jost Schenck Übersetzer: Jürgen Nagel

Cookies. Krishna Tateneni Jost Schenck Übersetzer: Jürgen Nagel Krishna Tateneni Jost Schenck Übersetzer: Jürgen Nagel 2 Inhaltsverzeichnis 1 Cookies 4 1.1 Regelungen......................................... 4 1.2 Verwaltung..........................................

Mehr

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER Inhalt 1 Einleitung... 1 2 Einrichtung der Aufgabe für die automatische Sicherung... 2 2.1 Die Aufgabenplanung... 2 2.2 Der erste Testlauf... 9 3 Problembehebung...

Mehr

Anbindung an easybill.de

Anbindung an easybill.de Anbindung an easybill.de Stand: 14. Dezember 2011 2011 Virthos Systems GmbH www.pixtacy.de Einleitung Pixtacy verfügt ab Version 2.3 über eine Schnittstelle zu dem Online-Fakturierungsprogramm easybill.de.

Mehr