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.

where<br />

dept = :hv1 or<br />

(job = :hv2 and<br />

years >= :hv3)<br />

Das Durchsuchen des Index IX2 liefert eine Liste von Satz-IDs (RIDs), die das Vergleichselement<br />

dept = :hv1 erfüllen. Das Durchsuchen des Index IX3 liefert eine<br />

Liste <strong>der</strong> RIDs, die das Vergleichselement job = :hv2 and years >= :hv3 erfüllen.<br />

Diese beiden Listen mit RIDs werden kombiniert <strong>und</strong> doppelte Werte werden entfernt,<br />

bevor auf die Tabelle zugegriffen wird. Diese Methode wird als logisches<br />

Verknüpfen über OR von Indizes (Index ORing) bezeichnet.<br />

Das logische Verknüpfen von Indizes über OR kann auch für Vergleichselemente<br />

verwendet werden, die von einer IN-Klausel angegeben werden, wie im folgenden<br />

Beispiel dargestellt:<br />

where<br />

dept in (:hv1, :hv2, :hv3)<br />

Während <strong>der</strong> Zweck des logischen Verknüpfens von Indizes über OR in <strong>der</strong> Eliminierung<br />

doppelter RIDs liegt, besteht das Ziel des logischen Verknüpfens von Indizes<br />

über AND (Index ANDing) darin, gemeinsame RIDs zu finden. Das logische Verknüpfen<br />

von Indizes über AND kann auftreten, wenn Anwendungen, die mehrere<br />

Indizes für entsprechende Spalten innerhalb <strong>der</strong>selben Tabellen erstellen, eine Abfrage<br />

mit mehreren AND-Vergleichselementen für die Tabelle ausführen. Mehrere<br />

Indexsuchen für alle mit indexierten Spalten generieren Werte, mit denen durch ein<br />

Hashverfahren Bitzuordnungen erstellt werden. Die zweite Bitzuordnung wird zur<br />

Prüfung <strong>der</strong> ersten Bitzuordnung verwendet, um die gesuchten Zeilen für die endgültige<br />

Ergebnismenge zu generieren. Betrachten Sie zum Beispiel die folgenden<br />

Indizes:<br />

INDEX IX4: SALARY ASC<br />

INDEX IX5: COMM ASC<br />

Diese Indizes können zur Auflösung <strong>der</strong> folgenden Vergleichselemente verwendet<br />

werden:<br />

where<br />

salary between 20000 and 30000 and<br />

comm between 1000 and 3000<br />

In diesem Beispiel generiert das Durchsuchen des Index IX4 eine Bitzuordnung,<br />

die das Vergleichselement salary between 20000 and 30000 erfüllt. Das Durchsuchen<br />

von IX5 <strong>und</strong> Prüfen gegen die Bitzuordnung für IX4 liefert eine Liste qualifizierter<br />

Satz-IDs, die beide Vergleichselemente erfüllen. Dies wird als dynamisches<br />

AND-Verknüpfen von Indizes über Bitzuordnungen (engl. dynamic bitmap ANDing)<br />

bezeichnet. Diese Methode wird nur angewendet, sofern die Tabelle ausreichend<br />

Kardinalität hat, die Spalten genügend Werte innerhalb des gesuchten Bereichs enthält<br />

o<strong>der</strong> genügend Duplizität vorhanden ist, wenn Gleichheitsvergleichselemente<br />

verwendet werden.<br />

Zur Realisierung <strong>der</strong> Leistungsvorteile dynamischer Bitzuordnungen beim Durchsuchen<br />

mehrerer Indizes kann es notwendig sein, den Wert des Datenbankkonfigurationsparameters<br />

sortheap <strong>und</strong> den Wert des Konfigurationsparameter sheapthres<br />

des Datenbankmanagers zu än<strong>der</strong>n. Bei Verwendung dynamischer Bitzuordnungen<br />

in Zugriffsplänen wird zusätzlicher Sortierspeicher benötigt. Wenn <strong>der</strong> Wert von<br />

sheapthres relativ nahe am Wert von sortheap liegt (d. h. weniger als ein Faktor<br />

von 2- o<strong>der</strong> 3-mal pro gleichzeitiger Abfrage), steht dynamischen Bitzuordnungen<br />

mit Zugriff auf mehrere Indizes wesentlich weniger Speicher zur Verfügung als das<br />

Kapitel 3. Faktoren mit Auswirkung auf die Leistung 281

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!