Managed Services - Midrange Magazin
Managed Services - Midrange Magazin
Managed Services - Midrange Magazin
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