30.08.2013 Aufrufe

Green-IT und Datenbanken - ODBMS

Green-IT und Datenbanken - ODBMS

Green-IT und Datenbanken - ODBMS

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.

6 Energieoptimierungen<br />

Index REGIONPRIMARYIDX On RREGIONKEY [IdKey, PrimaryKey, Unique];<br />

Der Vorteil dieser Datenhaltung ist, dass die Primärschlüssel immer sortiert sind,<br />

da die Spalten der Definition eines Index unterliegen. Dies ist für den Workload<br />

des TPC-H von Vorteil, da die Abfragen häufig Beziehungen abfragen, die sich auf<br />

Primärschlüssel beziehen.<br />

Die Fremdschlüsseldefinitionen sehen wie folgt aus:<br />

ForeignKey NATIONIDXFOREIGN(NREGIONKEY) References<br />

User.REGION(REGIONPRIMARYIDX);<br />

Dies ist eine Referenz der Spalte nregionkey aus Tabelle nation auf den Primärschlüssel<br />

der Tabelle region.<br />

Angabe von Wertebereichen: Um die Möglichkeiten von Caché voll ausnutzen<br />

zu können, müssen für die Schlüsselspalten die Wertebereichsdefinition MINVAL <strong>und</strong><br />

MAXVAL genau definiert werden. Bei der Nutzung von Indizes sind diese Werte<br />

für die Datenbank Caché relevant. Unmittelbar nach dem Einlesen der Daten sind<br />

die Werte für die Primärschlüssel so gesetzt: MAXVAL = 2147483647, MINVAL =<br />

-2147483647. Wir ändern den MINVAL bei allen Primärschlüsseln auf 1; eine Ausnahme<br />

bilden die Primärschlüssel der Tabellen region <strong>und</strong> nation für diese Tabellen<br />

muss der MINVAL 0 sein, da solche Primärschlüssel in Rohdaten vorhanden sind.<br />

Ein Beispiel mit festgelegtem Wertebereich:<br />

Property RREGIONKEY As<br />

%Library.Integer(MAXVAL = 2147483647, MINVAL = 0)<br />

[ Required, SqlColumnNumber = 2,<br />

SqlFieldName = R_REGIONKEY ];<br />

ExtentSize Selectivity: Nachdem die Daten nun importiert wurden <strong>und</strong> TPC-H<br />

Schema konform abgebildet wurde, ist es nun nötig, Parameter einzustellen, die für<br />

den Abfrageoptimierer von großer Wichtigkeit sind: Extentsize <strong>und</strong> Selectivity. Diese<br />

Werte werden pro Tabelle festgelegt. Extentsize gibt an wie viele Zeilen in der Tabelle<br />

gespeichert sind, <strong>und</strong> damit die Größe der Tabelle. Die exakte Größe für Extensize<br />

für unser Datenmodell mit 10 GB entnehmen wir Tabelle 6.3 aus der Spalte „Zeilenanzahl“.<br />

Der Wert für die Selektivität wird pro Spalte einer Tabelle festgelegt. Die Selektivität<br />

ist ein statistischer Wert, der die Werteverteilung einer Spalte wiedergibt. Spalten,<br />

die viele verschieden Werte beinhalten, haben eine niedrige Selektivität.<br />

Der Abfrageoptimierer benutzt Extentsize <strong>und</strong> Selectivity, um die Kosten für die<br />

Ausführung einer Abfrage zu berechnen. Wenn es mehrere Möglichkeiten gibt, eine<br />

Abfrage auszuführen, dann entscheidet sich der Abfrageoptimierer für die Möglichkeit,<br />

die sich nach seiner Heuristik als die günstigere erweist. Da die berechneten<br />

Kosten von der Extentsize <strong>und</strong> Selectivity abhängen, ist es notwendig, dass die Werte<br />

aktuell sind, um ein effizientes Arbeiten des Abfrageoptimierers zu gewährleisten.<br />

84

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!