197 lines
8.0 KiB
Plaintext
197 lines
8.0 KiB
Plaintext
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)
|