P8000/WEGA/contrib/ingres/dbs/sys/man/modify

197 lines
8.0 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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)