29.12.2013 Aufrufe

Fehlerbehebung und Optimieren der Datenbankleistung

Fehlerbehebung und Optimieren der Datenbankleistung

Fehlerbehebung und Optimieren der Datenbankleistung

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

Anstatt <strong>der</strong> Tabelle EMPLOYEE, die sich nur in einer Datenbankpartition befindet,<br />

verwendet <strong>der</strong> Datenbankmanager R_EMPLOYEE, d. h. die MQT, die in jede <strong>der</strong><br />

Datenbankpartitionen repliziert wird, in <strong>der</strong> die Tabelle SALES gespeichert ist. Der<br />

Leistungsvorteil ergibt sich daraus, dass die Mitarbeiterinformationen zur Ausführung<br />

des Joins nicht an jede Datenbankpartition über das Netz gesendet werden<br />

müssen.<br />

Replizierte MQTs in zusammengefassten Joins<br />

Replizierte MQTs können auch bei <strong>der</strong> Zusammenfassung (Kollokation) von Joins<br />

helfen. Wenn beispielsweise ein Sternschema eine große Fakttabelle enthält, die<br />

sich über zwanzig Datenbankpartitionen erstreckt, sind die Joins zwischen <strong>der</strong><br />

Fakttabelle <strong>und</strong> den Dimensionstabellen am effizientesten, wenn diese Tabellen<br />

durch Kollokation zusammenfasst werden. Wenn sich alle Tabellen in <strong>der</strong>selben<br />

Datenbankpartitionsgruppe befinden, ist höchstens eine Dimensionstabelle korrekt<br />

für einen zusammengefassten Join (d. h. Join von durch Kollokation zusammengefassten<br />

Tabellen) partitioniert. Die an<strong>der</strong>en Dimensionstabellen können nicht in einem<br />

zusammengefassten Join verwendet werden, weil die Joinspalten <strong>der</strong> Fakttabelle<br />

nicht dem Verteilungsschlüssel <strong>der</strong> Fakttabelle entsprechen.<br />

Betrachten Sie zum Beispiel eine Tabelle mit dem Namen FACT (C1, C2, C3, ...),<br />

die über Spalte C1 unterteilt ist, eine Tabelle mit dem Namen DIM1 (C1, dim1a,<br />

dim1b, ...), die über C1 unterteilt ist, eine Tabelle mit dem Namen DIM2 (C2,<br />

dim2a, dim2b, ...), die über C2 unterteilt ist, usw. In diesem Fall ist <strong>der</strong> Join zwischen<br />

FACT <strong>und</strong> DIM1 perfekt, da das Vergleichselement dim1.c1 = fact.c1 von<br />

den durch Kollokation zusammengefasst Daten profitiert. Beide Tabellen sind über<br />

die Spalte C1 unterteilt.<br />

Der Join mit <strong>der</strong> Tabelle DIM2 <strong>und</strong> dem Vergleichselement dim2.c2 = fact.c2<br />

kann jedoch nicht mit durch Kollokation zusammengefassten Daten realisiert werden,<br />

da FACT über die Spalte C1 unterteilt ist <strong>und</strong> nicht über die Spalte C2. In diesem<br />

Fall könnten Sie die Tabelle DIM2 in <strong>der</strong> Datenbankpartitionsgruppe <strong>der</strong> Fakttabelle<br />

replizieren, sodass <strong>der</strong> Join lokal in je<strong>der</strong> Datenbankpartition erfolgen kann.<br />

Wenn Sie eine replizierte MQT erstellen, kann die Quellentabelle eine Einzelpartitionstabelle<br />

o<strong>der</strong> eine Mehrpartitionstabelle in einer Datenbankpartitionsgruppe sein.<br />

In den meisten Fällen ist die replizierte Tabelle klein <strong>und</strong> kann in einer Datenbankpartitionsgruppe<br />

mit einer Einzelpartition untergebracht werden. Sie können die zu<br />

replizierende Datenmenge einschränken, indem Sie nur einen Teil <strong>der</strong> Spalten <strong>der</strong><br />

Tabelle angeben o<strong>der</strong> indem Sie die Anzahl <strong>der</strong> qualifizierten Zeilen durch Vergleichselemente<br />

begrenzen.<br />

Eine replizierte MQT kann auch in einer Datenbankpartitionsgruppe mit mehreren<br />

Datenbankpartitionen erstellt werden, sodass Kopien <strong>der</strong> Quellentabelle in allen<br />

Datenbankpartitionen erstellt werden. Joins zwischen einer großen Fakttabelle <strong>und</strong><br />

den Dimensionstabellen finden in dieser Art von Umgebung mit größerer Wahrscheinlichkeit<br />

lokal statt, als wenn die Quellentabelle an alle Datenbankpartitionen<br />

per Broadcast übertragen werden muss.<br />

Indizes für replizierte Tabellen werden nicht automatisch erstellt. Sie können Indizes<br />

erstellen, die sich von denen für die Quellentabelle unterscheiden. Zur Vermeidung<br />

von Verletzungen von Integritätsbedingungen, die in <strong>der</strong> Quellentabelle nicht<br />

vorhanden sind, können Sie jedoch keine eindeutigen Indizes erstellen o<strong>der</strong> Integritätsbedingungen<br />

für replizierte Tabellen definieren, selbst wenn diese Integritätsbedingungen<br />

für die Quellentabelle gelten.<br />

298 <strong>Fehlerbehebung</strong> <strong>und</strong> <strong>Optimieren</strong> <strong>der</strong> <strong>Datenbankleistung</strong>

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!