09.01.2015 Aufrufe

Managed Services - Midrange Magazin

Managed Services - Midrange Magazin

Managed Services - Midrange Magazin

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.

TECHNIK & INTEGRATION<br />

Erstellung von MQTs<br />

Im letzten Beitrag haben Sie gesehen, dass MQTs vielfältig vom Optimizer verwendet werden.<br />

Wir haben aber auch feststellen können, dass wir auf die Verwendung keinen Einfluss haben,<br />

sondern die MQTs automatisch vom Optimizer genutzt werden. Und hier liegt auch das Problem:<br />

Wenn wir die MQTs nicht sorgfältig planen und die Datenkopien nicht pflegen, könnten<br />

die MQTs auch Probleme bereiten. Bevor Sie also beginnen, MQTs zu erstellen, sollten Sie<br />

sich detailliert mit den Möglichkeiten der Erstellung beschäftigen.<br />

In den folgenden Beispielen spielt<br />

wiederum die Tabelle „HIST00“ eine<br />

zentrale Rolle; sie enthält die Kundenkontakte<br />

vieler Jahre und ist aufgrund<br />

dieser historischen Daten Grundlage<br />

vieler Auswertungen. Für diese Tabelle<br />

erstelle ich MQTs, um vorhandene<br />

Reports zu beschleunigen. Natürlich<br />

könnte ich auch das Datenbankdesign<br />

ändern und die Datensätze beispielsweise<br />

auf verschiedene Jahrestabellen<br />

verteilen. Das hätte aber zur Folge,<br />

dass bestehende Auswertungen angepasst<br />

und HLL-Programme aktualisiert<br />

werden müssten. Und falls ich irgendwann<br />

einmal die Auswertungen mehrerer<br />

Jahre benötige, hätte ich wieder<br />

das ursprünglich geschilderte Problem.<br />

Außerdem müsste ich die vorhandenen<br />

Tabellen alle namentlich und inhaltlich<br />

kennen. Die Vorteile der MQTs sind also<br />

nicht zu übersehen:<br />

ó Bestehende Reports und HLL-Pro-<br />

gramme müssen nicht verändert werden<br />

und profitieren unter Umständen<br />

dennoch von den neuen Objekten.<br />

MQTs können somit nachträglich<br />

erstellt werden, ohne dass Änderungen<br />

in der Applikation erforderlich<br />

sind.<br />

ó SQL-Anwender müssen die Inhalte<br />

bestehender MQTs nicht kennen. Der<br />

Optimizer entscheidet, ob es besser<br />

ist, die Basistabelle oder die verdichteten<br />

Daten zu verwenden.<br />

ó Der Optimizer kann gezwungen wer-<br />

den, die MQT zu verwenden, indem<br />

sie direkt im SQL-Statement verwen-<br />

det wird. Mit SQL-Indizes ist das nicht<br />

möglich.<br />

Schauen wir uns jetzt die Erstellung<br />

der MQTs an: MQTs werden mit der<br />

SQL-Anweisung CREATE TABLE erstellt.<br />

Alternativ kann der SQL-Befehl ALTER<br />

TABLE verwendet werden, um eine bestehende<br />

physische Datei/Tabelle in eine<br />

MQT zu verwandeln. Probieren wir<br />

es aus, indem wir als Erstes eine MQT<br />

erstellen, die die historischen Kundenkontaktdaten<br />

des Jahres 1998 enthält.<br />

CREATE TABLE MQTJAHR98<br />

AS<br />

( SELECT HIKDNR, HIMED, HIDATE, HIUSR<br />

FROM HIST00<br />

WHERE HISTORY_DATUM > '01.01.1998'<br />

AND HISTORY_DATUM < '31.12.1998'<br />

)<br />

DATA INITIALLY IMMEDIATE<br />

REFRESH DEFERRED<br />

MAINTAINED BY USER<br />

ENABLE QUERY OPTIMIZATION;<br />

Das oben gezeigte SELECT-Statement<br />

wird in der Tabelle gespeichert. Eine<br />

Aktualisierung der Daten ist daher auch<br />

sehr einfach durch die SQL-Anweisung<br />

REFRESH TABLE möglich.<br />

REFRESH TABLE MQTJAHR98;<br />

Im zugehörigen SQL-Statement können<br />

Sie viele bekannte Klauseln und<br />

Funktionen verwenden. Derzeit – im<br />

Release V5R4 und V6R1 – unterstützt<br />

die MQT:<br />

ó Einzelabfragen und Verknüpfungs-<br />

abfragen (JOIN),<br />

ó WHERE<br />

ó GROUP BY und HAVING<br />

ó ORDER BY<br />

ó FETCH FIRST … ROWS<br />

ó VIEWS<br />

ó Common Table Expression ( CTE)<br />

ó Nested Table Expression ( NTE)<br />

ó UNION<br />

ó und partitionierte Tabellen<br />

Allerdings gibt es auch ein paar<br />

Einschränkungen, die Sie im SQL-Referenzhandbuch<br />

finden und die abhängig<br />

von Ihrem Release sind.<br />

Die Datenbank erkennt, dass es<br />

sich um eine MQT handelt, anhand der<br />

vier Klauseln am Ende des CREATE TABLE-<br />

Statements:<br />

CREATE TABLE MQTJAHR98<br />

AS<br />

( .......<br />

.......<br />

)<br />

DATA INITIALLY IMMEDIATE<br />

REFRESH DEFERRED<br />

MAINTAINED BY USER<br />

ENABLE QUERY OPTIMIZATION;<br />

Data Initially Immediate<br />

oder Data Initially Deferred<br />

Die Klauseln „Data Initially Immediate“<br />

und „Data Initially Deferred“ bestimmen,<br />

ob die MQT bereits beim Erstellen<br />

gefüllt oder ob nur eine leere Datei erzeugt<br />

werden soll. Wird „Data Initially<br />

Immediate“ angegeben, wird die Tabelle<br />

sofort mit Daten versorgt. Verwenden<br />

Sie hingegen die Klausel „Data Initially<br />

Deferred“, erhalten Sie zunächst eine<br />

leere Datei.<br />

Refresh Deferred<br />

Mit Hilfe der Option „Refresh Deferred“<br />

soll gesteuert werden, ob die MQT auf<br />

42<br />

MIDRANGE MAGAZIN · 02/2011

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!