MODIFY(QL) DABA16 MODIFY(QL) NAME modify - Modifizieren der Speicherungsstruktur einer Rela- tion UEBERSICHT modify relname [ to storage_structure [ on key1 [ : sortorder ] { , key_n [ : sortorder ] } ] [ where [ fillfactor = n ] [ , minpages = n ] [ , maxpages = n ] ] ] BESCHREIBUNG Relname wird in die spezifizierte Speicherungsstruktur modi- fiziert. Nur der Relationseigentuemer darf die Relation mo- difizieren. Diese Anweisung wird benutzt, um die Leistungsfaehigkeit zu erhoehen, wenn grosse oder haeufig benutzte Relationen ver- arbeitet werden sollen. Die Systemrelationen und Sichten (Views) koennen mit modify nicht modifiziert werden. Folgende Speicherungsstrukturen (storage_structure) sind mo- eglich : isam - index-sequentielle Speicherungsstruktur cisam - isam, komprimiert hash - Random hash Speicherungsstruktur chash - hash, komprimiert heap - schluessellos unstrukturiert cheap - heap, komprimiert heapsort - heap sortiert, doppelte Tupel entfernt cheapsort - heapsort, komprimiert truncated - heap, alle Tupel geloescht (tupellos) same - Reorganisation Die Strukturen "heapsort", "cheapsort", "truncated" und "sa- me" sind nur temporaere Zustaende und im eigentlichen Sinne keine Speicherungsstrukturen. In der Schrift "Anleitung fuer den Datenbankadministrator, Erstellen und Pflegen der Datenbank" ist naeher erlaeutert, wie Speicherungsstrukturen bezueglich der benutzten Relatio- nen und der haeufigsten Anfragetypen auszuwaehlen sind. Alle Speicherungsstrukturen mit dem Praefix "c" sind kompri- miert (extern variabel lang gespeichert). Der z.Z. imple- mentierte Kompressionsalgorithmus unterdrueckt rechtsbuendi- ge Blanks in Character-Daten. Wenn die on Phrase bei der Modifikation in isam, cisam, hash oder chash nicht spezifiziert wird, werden als Schluessel automatisch die Werte der ersten Domaene verwendet. Beim Modifizieren in heap oder cheap muss die on Phrase ausgelas- sen werden. Wenn in heapsort oder cheapsort modifiziert wird, ist die on Phrase wahlfrei. Soll eine Relation sortiert werden (isam, cisam, heapsort oder cheapsort), wird als Sortierschluessel der in der on Phrase spezifizierte verwendet. Der erste Schluesselbe- standteil der on Phrase ist der Haupt-Sortierbegriff. Wei- tere spezifizierte Schluesselbestandteile sind entsprechend der spezifizierten Folge nachgeordnete Sortierbegriffe. Do- maenen, die in der on Phrase nicht als Sortierschluessel spezifiziert wurden, werden entsprechend ihrer Domaenenfolge als weitere Sortierbegriffe benutzt. Wenn eine Relation in heapsort oder cheapsort modifiziert werden soll, kann die Sortierrichtung sortorder als ascen- ding (aufsteigend) oder descending (absteigend) spezifiziert werden. Standardannahme ist stets ascending. Fuer jeden in der on Phrase spezifizierten Schluessel ist : key:descending angebbar, womit eine absteigende Sortierfolge fuer diesen Schluessel erreichbar wird. Zur Vollstaendigkeit sei er- waehnt, dass auch die ascending Spezifikation nach dem Dop- pelpunkt (":") moeglich aber ueberfluessig ist, da sie die Standardannahme darstellt. Descending kann mit dem Buchsta- ben "d" und ebenso ascending mit "a" abgekuerzt werden. Bei einer Modifikation zur Speicherungsstruktur same wird die Relation reorganisiert. d.h. die Speicherungsstruktur, der Sortierschluessel und die Sortierordnung bleiben erhal- ten. Nach umfangreichen Aenderungen kann die Anordnung der Daten uneffektiv werden, so dass ein erneutes Erstellen oder das Reorganisieren der Schluesselstruktur sinnvoll ist. Fillfactor spezifiziert den prozentualen Fuellfaktor (von 1-100) jeder primaeren Datenseite, die (unter idealen Bedin- gungen) mit Tupel gefuellt werden soll. Fillfactor darf bei isam, cisam, hash und chash benutzt wer- den. Sorgfalt ist bei der Verwendung grosser Fuellfaktoren notwendig, da eine ungleichmaessige Verteilung der Schlues- selwerte veranlassen koennte, dass Ueberlaufseiten erzeugt werden. Damit wuerde die Zugriffsleistung fuer die Relation gemindert werden. Minpages spezifiziert die minimale Anzahl von Primaerseiten fuer hash- oder chash-Relationen. Maxpages ist die maximale Anzahl von Primaerseiten, die eine hash- oder chash-Relation besitzen soll. Von minpages oder maxpages muss wenigstens ein Parameter an- gegeben werden. Sind sowohl minpages als auch maxpages spe- zifiziert, darf minpages nicht groesser als maxpages sein. Folgende Standardannahmen fuer fillfactor, minpages und max- pages erfolgen : _F_I_L_L_F_A_C_T_O_R _M_I_N_P_A_G_E_S _M_A_X_P_A_G_E_S hash 50 10 nach Bedarf chash 75 1 nach Bedarf isam 80 - - cisam 100 - - - : Als Argument unzulaessig BEISPIEL[E] /* Modifizieren der Relation "personal" in eine index-sequentielle Speicherungsstruktur mit "name" als Schluesseldomaene/* modify personal to isam on name /* Wenn "name" die erste Domaene der Relation "personal" ist, wird das gleiche Resultat erreicht durch : */ modify personal to isam /* Die gleiche Modifikation aber mit einer geforderten Belegung der Primaerseiten von 60% */ modify personal to isam on name where fillfactor = 60 /* Modifizieren der Relation "lieferung" in eine hash Speicherungsstruktur mit "num" und "menge" als Schluesseldomaenen */ modify lieferung to chash on num, menge /* Die gleiche Modifikation aber mit einem gewuenschten Belegungsgrad der Primaerseiten von 75%, einem Minimum von 7 und einem Maximum von 43 Primaerseiten */ modify lieferung to chash on num, menge where fillfactor = 75, minpages = 7, maxpages = 43 /* Noch einmal die gleiche Modifikation aber mit einem Minimum von 16 geforderten Primaerseiten */ modify lieferung to chash on num, menge where minpages = 16 /* Modifizieren der Relation "teile" in eine heap Speicherungsstruktur */ modify teile to heap /* Modifizieren der Relation "teile" in heap aber sortieren der Domaene "tnum" und dem Entfernen doppelter Tupel */ modify teile to heapsort on tnum /* Modifizieren der Relation "personal" in aufsteigender Sortierfolge nach "gebdat" (Geburtsjahr) und absteigender Sortierfolge nach "gehalt" sowie dem Entfernen doppelter Tupel */ modify personal to heapsort on gebdat, gehalt:descending SIEHE AUCH modifyr(mutos), sysmod(mutos)