29.12.2013 Aufrufe

Fehlerbehebung und Optimieren der Datenbankleistung

Fehlerbehebung und Optimieren der Datenbankleistung

Fehlerbehebung und Optimieren der Datenbankleistung

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

and d2.perkey = f.perkey<br />

and d1.item_desc = ’golf club’<br />

and d2.month = ’JUL’<br />

group by d2.year<br />

Ein Abfrageausführungsplan mit Sternjoin kann eine gute Wahl für diese Abfrage<br />

sein, sofern das Optimierungsprogramm feststellen kann, ob die einfache Gleichheitsverknüpfung<br />

(Semi-Join) von PRODUCT <strong>und</strong> DAILY_SALES o<strong>der</strong> die einfache<br />

Gleichheitsverknüpfung von PERIOD <strong>und</strong> DAILY_SALES die höhere Selektivität<br />

erzielt. Um einen effizienten Sternjoinplan generieren zu können, muss das Optimierungsprogramm<br />

in <strong>der</strong> Lage sein, die selektivste Semi-Join-Verknüpfung für<br />

den äußeren Part <strong>der</strong> logischen Indexverknüpfungsoperation über AND auszuwählen.<br />

Data-Warehouses enthalten häufig Datensätze für Produkte, die nicht länger in den<br />

Geschäftsregalen verfügbar sind. Dies kann dazu führen, dass die Verteilung von<br />

PRODUCT-Spalten nach dem Join völlig an<strong>der</strong>s aussieht als ihre Verteilung vor<br />

dem Join. Da das Optimierungsprogramm mangels besserer Informationen die Selektivität<br />

lokaler Vergleichselemente allein auf <strong>der</strong> Gr<strong>und</strong>lage von Statistiken zu<br />

den Basistabellen bestimmt, schätzt es die Selektivität des Vergleichselements<br />

item_desc = ’golf club’ möglicherweise viel zu hoch ein.<br />

Wenn Golfschläger historisch betrachtet zum Beispiel 1 % <strong>der</strong> hergestellten Produkte<br />

darstellen, jedoch jetzt 20 % <strong>der</strong> Umsätze ausmachen, würde das Optimierungsprogramm<br />

mit hoher Wahrscheinlichkeit die Selektivität des Vergleichselements<br />

item_desc = ’golf club’ überschätzen, da keine Statistikdaten vorhanden<br />

sind, die die Verteilung von item_desc nach dem Join beschreiben. Und wenn außerdem<br />

die Umsätze in allen zwölf Monaten gleichermaßen wahrscheinlich sind, läge<br />

die Selektivität des Vergleichselements month = ’JUL’ bei ca. 8 %. Daher würde<br />

<strong>der</strong> Schätzfehler für die Selektivität des Vergleichselements item_desc = ’golf<br />

club’ das Optimierungsprogramm fälschlicherweise dazu veranlassen, die scheinbar<br />

selektivere Semi-Join-Operation zwischen PRODUCT <strong>und</strong> DAILY_SALES als<br />

äußeren Part <strong>der</strong> logischen AND-Verknüpfung <strong>der</strong> Indizes des Sternjoinplans auszuführen.<br />

Im folgenden Beispiel wird die Bereitstellung von Statistiksichten zur Lösung dieses<br />

Typs von Problem schrittweise veranschaulicht.<br />

Betrachten Sie eine Datenbank aus einem typischen Data-Warehouse, in dem<br />

STORE, CUSTOMER, PRODUCT, PROMOTION <strong>und</strong> PERIOD die Dimensionstabellen<br />

sind <strong>und</strong> DAILY_SALES die Fakttabelle ist. In den folgenden Tabellen sind<br />

die Definitionen für diese Tabellen aufgeführt.<br />

Tabelle 62. STORE (63 Zeilen)<br />

Spalte storekey store_number city state district ...<br />

Attribut integer<br />

not null<br />

char(2) char(20) char(5) char(14) ...<br />

Primärschlüssel<br />

Tabelle 63. CUSTOMER (1.000.000 Zeilen)<br />

Spalte custkey name address age gen<strong>der</strong> ...<br />

Attribut integer<br />

not null<br />

char(30) char(40) smallint char(1) ...<br />

Primärschlüssel<br />

Kapitel 3. Faktoren mit Auswirkung auf die Leistung 465

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!