DE68927142T2 - Verriegelungs- und Lese-Minimierung in einem segmentierten Speicherraum - Google Patents

Verriegelungs- und Lese-Minimierung in einem segmentierten Speicherraum

Info

Publication number
DE68927142T2
DE68927142T2 DE68927142T DE68927142T DE68927142T2 DE 68927142 T2 DE68927142 T2 DE 68927142T2 DE 68927142 T DE68927142 T DE 68927142T DE 68927142 T DE68927142 T DE 68927142T DE 68927142 T2 DE68927142 T2 DE 68927142T2
Authority
DE
Germany
Prior art keywords
data
page
reading
locking
pages
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE68927142T
Other languages
English (en)
Other versions
DE68927142D1 (de
Inventor
Richard Anthony Crus
Donald James Haderle
Teng James Zu-Chia
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE68927142D1 publication Critical patent/DE68927142D1/de
Application granted granted Critical
Publication of DE68927142T2 publication Critical patent/DE68927142T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99938Concurrency, e.g. lock management in shared database
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

    Hintergrund der Erfindung Technisches Gebiet
  • Die vorliegende Erfindung betrifft rechnergestützte Datenverarbeitungssysteme und insbesondere das Löschen, Sperren und Lesen von Daten, die in einem segmentierten Speicher gespeichert sind.
  • Stand der Technik
  • Rechnergestützte Datenbankverwaltungssysteme benutzen zentrale, Ultrahochgeschwindigkeits-Verarbeitungseinheiten für das Behandeln und Verarbeiten von Daten, und viel langsamere physikalische Speichervorrichtungen für die Permanentspeicherung der Daten. Wenn physikalisch abgespeicherte Daten zum Verarbeiten abgerufen werden müssen, werden sie von der Speichervorrichtung in einen Puffer eingespeichert, wo sie gelesen, aktualisiert oder sonstwie bearbeitet werden können. Wenn nach dem Verarbeiten der Seiteninhalt im Puffer aktualisiert ist, wird die Seite wieder zurück in den physikalischen Speicher kopiert, wo sie die vorher dort gespeicherten Daten ersetzt. Puffer können entweder in elektronischen Hochgeschwindigkeitsspeichern (Realspeicher), wie im Hauptspeicher einer Zentraleinheit - ZE (Central Processing Unit - CPU) oder in physikalischen Hochgeschwindigkeits-Speichervorrichtungen (Seitenspeichergeräten) resident sein.
  • Jede Übertragung einer Datenseite aus dem physikalischen Speicher in einen Puffer, ein Prozeß, der als "Buffer Paging" (Seitenpuffern) bekannt ist, dauert entweder etwa 2 ms oder 20 ms, je nachdem, ob auf die Seite sequentiell (unmittelbar nach der vorher abgespeicherten Seite) oder willkürlich zugegriffen wird. In typischen größeren Datenbanken mit Millionen Datensätzen, die vielleicht über 100.000 Datenseiten verstreut sind, würde ein wahlfreies Lesen der gesamten Datenbank über eine halbe Stunde allein zum Seitenpuffern in Anspruch nehmen. Jede Reduktion der Anzahl der Datenseiten, die in den Puffer gespeichert werden müssen, bedeutet eine direkte, signifikante Verbesserung der Leistung der Datenbank. Es ist daher erwünscht, das Seitenpuffern zu minimieren durch Eliminieren unnötiger Anforderungen nach Lesen der Datenseiten.
  • Die als "Page Level Locking" (Seitensperren) bekannte Technik wird in Datenbankverwaltungssystemen angewandt, damit mehrere Anwender bzw. Programme gleichzeitig auf eine Datenbank zugreifen bzw. sie aktualisieren können. Durch das "Seitensperren" wird jede Seite, auf die ein Anwender bzw. ein Programm gerade zugreift bzw. sie aktualisiert, "gesperrt", um das gleichzeitige Zugreifen bzw. Aktualisieren durch einen anderen Anwender oder Programm zu verhindern. Sperren ist eine sehr aufwendige Operation, die viel CPU-Zeit verbraucht, und kann die Leistung und Ansprechzeit des Systems ernstlich beeinträchtigen. Es ist daher erwünscht, das Sperren zu minimieren, ohne die Parallelbetriebskontrolle aufzugeben, die für eine wirksame Benutzung durch mehrere Anwender erforderlich ist.
  • W. Chu et al. offenbaren in "Fault Tolerant Locking for Tightly Coupled Systems", Proceedings of the 5th Symposium on Reliability in Distributed Software and Database Systems, IEEE Computing Society Press, Copyright 1986, S. 49-55, ein fehlertolerantes Sperr-Protokoll, in dem ein Sperrwort, das den Status einer Datensatzgruppe enthält, an diese Gruppe angehängt wird. Der Prozessor durchsucht eine Status-Tabelle, bevor er auf die Gruppe zugreift. Aufgezeichnete Status- Zustände sind: Frei, gesperrt, Aktualisierung eingeleitet, oder gestört.
  • C'T MAGAZIN FÜR COMPUTER TECHNIK, Nr. 8, August 1986 offenbart auf den Seiten 72, 74-78, ein Verfahren zum Verwalten von Speicherplatz auf einer Diskette, in der der Speicherplatz in zwei Sektoren oder Cluster fester Größe unterteilt ist, die den gerade geschriebenen Dateien zugeordnet werden, wobei die Zuordnung in der Form von Einträgen in ein Verzeichnis und eine Dateizuweisungstabelle (FAT) registriert wird. Ein bestimmter Wert des FAT-Eintrags bedeutet, daß der betreffende Cluster frei ist. Dieser besondere Wert wird in alle betroffenen entsprechenden FAT-Einträge gemacht, die vom Löschen einer bestimmen Datei betroffen sind. Auf diese Weise kann auf diese Sektoren, die gelöschte Daten enthalten, zugegriffen werden, so als ob sie keine Daten enthalten würden.
  • Datenbankverwaltungssysteme benutzen Protokollaufzeichnungen, um nicht erfolgreiche Transaktionen oder Operationen rückgängig machen zu können. Diese Fähigkeit ist kritisch, weil Transaktionen oder Operationen, die vor ihrem Abschluß abgebrochen werden, einige Daten verändert haben während andere in ihrem vorherigen Zustand verbleiben. Die bis zu diesem Punkt des Versagens geschriebenen Protokolleinträge können dazu benutzt werden, die Tabelle in ihrem vorherigen Zustand wiederherzustellen oder zurückzufahren, so daß die Transaktion bzw. Operation neu begonnen werden kann. Sobald eine Transaktion bzw. Operation abgeschlossen ist und ihre Datenveränderungen permanent gemacht werden können, ist diese Transaktion oder Operation "festgeschrieben". Nach dem Festschreiben kann eine Transaktion oder Operation nicht mehr rückgängig gemacht werden.
  • Wenn Daten in einer Dateneinheit durch eine Transaktion bzw. Operation verändert wurden, jedoch noch nicht "festgeschrieben" sind, kann diese Dateneinheit Daten enthalten, die nicht veraltet sind, wenn eine Sperre für die Seite angefordert wird, die diese Daten enthält. Zu dem Zeitpunkt, an dem die Sperre für diese Seite erhalten wird, wird die Transaktion bzw. Operation entweder durch Festschreiben oder Abbruch der Datenänderungen abgeschlossen sein. Der Abschluß der Transaktion bzw. Operation kann dazu führen, daß die Daten jetzt veraltet sind. Es wäre erwünscht, das Lesen solcher Datenseiten zwecks Leistungsverbesserung zu minimieren.
  • Eine bedeutsame Klasse von Datenbankverwaltungssystemen sind relationale Datenbankverwaltungssysteme. In einem relationalen Datenbankverwaltungssystem erkennt man, daß Daten in einer oder mehreren Tabellen oder "Relationen" existieren, die jeweils aus einer spezifischen Anzahl Spalten und einer veränderlichen Anzahl nichtgeordneter Zeilen oder "Datensätzen" (Records) bestehen. Der Vorteil relationaler Datenbankverwaltungssysteme ist, daß auf ihre Daten zugegriffen werden kann durch Bezugnahme auf ihren Inhalt anstatt auf ihren spezifischen Aufbau oder ihren Speicherort.
  • Bisher hat das Löschen der ganzen Inhalte einer großen Dateneinheit, wie eine relationale Datenbanktabelle, ein Prozeß, der auch als Massenlöschung oder ungualifizierte Löschung bekannt ist, bei größeren Dateneinheiten eine lange Zeit in Anspruch genommen. Und zwar deswegen, weil der Massenlöschprozeß die Datensätze der Einheit (Zeilen) einen nach dem anderen löschen muß unter Herstellung eines Protokolleintrags für jeden gelöschten Datensatz.
  • Zusammenfassung der Erfindung
  • Eine Aufgabe der vorliegenden Erfindung ist das Minimieren des Seitenpufferns in Datenbankverwaltungssystemen durch Reduzieren der Anzahl der gelesenen Seiten und durch Reduzieren des Seitensperrens.
  • Eine weitere Aufgabe der Erfindung ist das Reduzieren der für die Massenlöschung der Tabellen einer relationalen Datenbank erforderlichen Zeit.
  • Diese und weitere Aufgaben werden gelöst durch Verfahren zum Lesen und Einfügen von Daten in Seiten in einem physikalischen Speicherplatz, in dem jede Datenseite nur Daten für eine einzige Dateneinheit enthält, und in der der Status für jede Seite getrennt von dieser Seite gespeichert wird. In beiden Verfahren wird der Speicherplatz während des Löschens aller zu einer Dateneinheit gehörenden Daten gesperrt. In beiden Verfahren werden auch Seiten, die wegen des Löschens aller Daten der Dateneinheit nur veraltete Daten enthalten, so behandelt, als ob sie keine Daten enthielten.
  • Im Verfahren zum Lesen der Seiten werden Seiten, die wenigstens einige aktuelle Daten enthalten, sowohl gesperrt als auch gelesen. Seiten, die wegen des Löschens von weniger als allen Daten der Dateneinheit nur veraltete Daten enthalten, werden gesperrt und werden nach Anlegen der Sperre nur dann gelesen, wenn sie aktuelle Daten enthalten. Seiten, die keine Daten oder infolge des Löschens aller Daten der Dateneinheit nur veraltete Daten enthalten, werden weder gesperrt noch gelesen.
  • Im Verfahren zum Einfügen von Daten in die Seiten werden Seiten, die aktuelle Daten, und Seiten, die wegen des Löschens von weniger als allen Daten der Dateneinheit nur veraltete Daten enthalten, gesperrt und gelesen, bevor Daten in sie eingefügt werden. Bei Seiten, die wegen des Löschens aller Daten der Dateneinheit keine Daten oder nur veraltete Daten enthalten, werden die Daten ohne vorheriges Lesen dieser Seiten unmittelbar eingefügt.
  • Weitere Merkmale und Vorteile der vorliegenden Erfindung, die in den beiliegenden Ansprüchen definiert sind, gehen aus der nachfolgenden detaillierten Beschreibung ihrer bevorzugten Ausführungsform anhand der begleitenden Zeichnungen hervor, in denen
  • Fig. 1 eine segmentierte Tabellendatei zeigt, wie sie für das Verfahren der bevorzugten erfindungsgemäßen Ausführungsform benötigt wird.
  • Fig. 2 zeigt ein einzelnes Segment der segmentierten Tabellendatei der Fig. 1 und die ihr zugeordnete Raumabbildungsseite.
  • Fig. 3 zeigt das Format eines Segmentsteuerblocks der Raumabbildungsseite der Fig 2.
  • Beschreibung der bevorzugten Ausführungsform Die segmentierte Tabellendatei
  • Die Inhalte (Zeilen) der relationalen Datenbanktabellen sind im Normalfall in physikalischen Speichern in "Tabellendateien" gespeichert. Zum Bilden einer Tabellendatei werden ein oder mehrere Bereiche des physikalischen Speichers logisch miteinander verkettet, um einen einzigen linearen Adressenbereich zu bilden (d.i. beginnend mit Null bis 64 Gigabytes). Die Tabellendatei wird unterteilt (formatiert) in Seiten fixer Größe und alle Seiten in der Tabellendatei werden durch ihre relative Seitenzahl eindeutig identifiziert. Jede Tabellendatei ist einer Puffer-Gruppe oder einem Puffer-Registerspeicher zugeordnet, in dem die Puffergröße gleich ist der Seitengröße der Tabellendatei.
  • Eine segmentierte Tabellendatei ist ein besonderer Typ einer Tabellendatei, die sich durch ihr Schema der inneren Datenorganisation und Platzverwaltung unterscheidet. Segmentierte Tabellendateien beinhalten in der Regel eine Kopfseite, Raumabbildungsseiten und Datenseiten. Die Datenseiten speichern die eigentlichen Daten ab während die Kopfseite und die Raumabbildungsseiten den Rahmen zum schnellen Zugriff auf die Datenseiten bilden.
  • Die Datenseiten sind in Segmente gruppiert, die durch ihre entsprechenden Segmentnummern eindeutig identifiziert sind. Die Segmente sind gleich groß und bilden die Grundeinheit zum Speichern in der Tabellendatei. Alle Datenseiten in einem gegebenen Segment enthalten ausschließlich Daten für die Tabelle dieses Segments. Wenn Tabellen mehr Speicherplatz brauchen, werden ihnen weitere Segmente zugeteilt.
  • Die Segmente sind ihrerseits gruppiert, und vor jedem Segment steht eine Raumabbildungsseite, die Einträge enthält, die als Segmentsteuerblöcke bekannt sind, für jedes Segment der Raumabbildungsseite. Die Segmentsteuerblöcke für jede Tabelle sind durch Zeiger verkettet. Die Kopfzeile identifiziert die Raumabbildungsseiten auf die gleiche Weise wie die Raumabbildungsseiten die Segmente identifizieren, unter Schaffung einer hierarchischen Speicherstruktur innerhalb der segmentierten Tabellendatei.
  • Fig. 1 zeigt eine typische segmentierte Tabellendatei 10, in der die Verfahren der vorliegenden Erfindung besonders nützlich sind. Die Tabellendatei besteht aus einer großen Anzahl Seiten gleicher Größe. Die erste Seite in der Tabellendatei 10 ist der Tabellendateikopf 12, jeweils einer für die ganze Tabellendatei. Der Tabellendateikopf 12 enthält den Tabellendatei-Identifikator und weitere Informationen, die sich auf die Tabellendatei als ganzes beziehen. Der Rest der Tabellendatei besteht aus Raumabbildungsseiten 14, die jeweils von einer Anzahl Segmente 16 gefolgt sind. Jedes Segment 16 besteht aus einer Anzahl Datenseiten 18. Nur die Datenseiten 18 enthalten Daten aus den Tabellenzeilen. Die Raumabbildungsseiten und die Kopfseite sehen eine hierarchische Organisation vor, die den Zugriff auf die in den einzelnen Datenseiten gespeicherten Daten gestatten.
  • Eine Raumabbildungsseite 14 und ihre nachfolgenden Segmente 16a, 16b, ... sind in Fig. 2 dargestellt. Die Raumabbildungsseite 14 beinhaltet eine Liste von Segmentsteuerblöcken 20 und einen Zeiger 22 auf die nächste Raumabbildungsseite. Die Segmente 16a, 16b, ..., die auf die Raumabbildungsseite 14 folgen, enthalten eine Anzahl Datenseiten 18, deren jede die Daten für mehrere Tabellenzeilen beinhalten. Weil die Tabellendatei 10 segmentiert ist, enthalten alle Datenseiten 18 innerhalb eines gegebenen Segments 16 Zeilen für die gleiche Tabelle. Nebeneinanderliegende Segmente 16 können Daten für die gleiche oder auch für unterschiedliche Tabellen enthalten. Jedes Segment 16 weist einen entsprechenden Segmentsteuerblock 20 auf.
  • Ein typischer Segmentsteuerblock 20 ist in Fig. 3 dargestellt. Jeder Segmentsteuerblock 20 beinhaltet einen Tabellen-Identifikator 24, einen Segmentstatus-Indikator 25, eine Anzahl Datenseitenstatusindikatoren 26 und einen Zeiger 28 auf den nächsten Segmentsteuerblock der gleichen Tabelle.
  • Diese Zeiger 28 erzeugen Ketten von Segmentsteuerblöcken 20, die zur gleichen Tabelle gehören, wie aus Fig. 2 ersichtlich ist. Der Segmentsteuerblock 20 für ein gegebenes Segment 16 speichert einen Hinweis 26 auf den Status jeder Datenseite 18 innerhalb dieses Segments. Die fünf verschiedenen Werte (26a- e) für diesen Statusindikator sind:
  • (1) FULL (VOLL) (26a) - die Datenseite ist absolut voll mit aktuellen Daten;
  • (2) PARTIALLY FULL (TEILWEISE VOLL) (26b) - die Datenseite ist teilweise mit aktuellen Daten gefüllt;
  • (3) UNFORMATTED (UNFOPMATIERT) (26c) - die Datenseite ist nicht formatiert, enthält keine Daten;
  • (4) MASS DELETE (MASSENLÖSCHUNG) (26d) - die Datenseite enthält nur veraltete Daten als Ergebnis einer unqualifizierten oder Massenlö schung einer Tabelle; und
  • (5) QUALIFIE DELETE (QUALIFIZIERTE LÖSCHUNG) (26e) - die Datenseite enthält nur veraltete Daten als Ergebnis einer qualifizierten Löschung, in der nicht alle Daten in der Tabelle gelöscht wurden.
  • Als nächstes wird ein bevorzugtes Verfahren für die Massenlöschung aller Zeilen einer Datenbanktabelle beschrieben.
  • Massenlöschung in einer segmentierten Tabellendatei
  • In einer segmentierten Tabellendatei, wie sie in Fig. 1 und Fig. 2 gezeigt wird, wurde ein neues Verfahren zur wirksamen Durchführung einer Massenlöschung einer ganzen Tabelle entdeckt. Diese neue Massenlöschoperation verzichtet auf Zugriff, Sperren oder Protokollieren der Datenseiten 18 der Tabelle. Statt dessen tastet die Massenlöschoperation lediglich die Segnentsteuerblöcke 20 der betreffenden Tabelle ab, markiert ihre entsprechenden Segmentstatus-Indikatoren 25 als FREI (nicht zugeteilt). Das erste Segment 16 der Tabelle wird nicht freigegeben, damit das spätere Einschieben von Daten möglich bleibt. Protokollieren wird für die freigegebenen Raumabbildungsseiten 14 durchgeführt, damit sichergestellt ist, daß die Massenlöschung zurückgesetzt (rückgängig gemacht) werden kann.
  • Die Seitenstatusindikatoren 26 des Segmentsteuerblocks werden auf MASS DELETE gesetzt, um anzuzeigen, daß diese Seiten als Teil einer Massenlöschoperation gelöscht wurden. Wenn die Segmente 16, in denen diese Datenseiten stehen, wieder zugeteilt werden, werden die Seitenstatusindikatoren 26 nicht verändert, um sie dem Datenbankverwaltungssystem zur Kenntnis zu bringen. Das ist notwendig, weil eine besondere Maßnahme durchgeführt werden muß, bevor neue Daten in nassengelöschte Datenseiten 18 eingesetzt werden können. Der MASS DELETE Seitenstatusindikator 26 zeigt an, daß die Datenseite logisch leer ist. Massengelöschte Seiten enthalten somit keine aktiven oder aktuellen Daten - nur veraltete Daten, die bei der Massenlöschoperation nicht gelöscht wurden. Durch Vermeiden des Löschens veralteter Daten, läßt sich die für eine Massenlöschoperation erforderliche Zeit drastisch verkürzen, weil für die Datenseite keine Seitenzugriffe und Protokollaufzeichnungen erforderlich sind.
  • Tabelle 1 enthält eine illustrative Pseudocode-Implementierung der erfindungsgemäßen Löschoperation. TABELLE 1
  • Es ist wesentlich, daß keine andere Transaktion oder Operation auf eine Tabelle ausgeführt wird, die gerade massengelöscht wird. Zeile 101 in Tabelle 1 stellt das sicher durch Sperren der Tabelle im Exklusivmodus, und verhindert auf diese Weise, daß andere Anwender oder Programme auf die Daten in dieser Tabelle zugreifen. Gleichzeitig wird in Zeile 102 eine Sperre vom "Massenlösch"-Typ erzeugt, um nicht festgeschriebene (noch nicht permanente) freie Segmente von einem Anwender oder einem Anwendungsprogramm einschließlich der Massenlöschoperation wieder benutzen zu lassen. Diese Massenlöschsperre wird somit im Exklusivmodus erzeugt und wird erst dann freigegeben, wenn die Massenlöschoperation permanent und festgeschrieben ist.
  • Die Massenlöschoperation greift dann auf jedes Segment der Tabelle zu durch Verfolgen der Kette der Segmentsteuerblöcke der Tabelle. Auf die Raumabbildungsseiten 14 wird zugegriffen soweit für jedes Segment 16 der Tabelle erforderlich. Das erste Segment 16 der Tabelle wird etwas anders behandelt als die nachfolgenden Segmente (Zeilen 105-107). Für beide wird ein Protokolleintrag geschrieben, um das Vorher- und Nachher- Bild des Segmentsteuerblocks 20 des Segments zu dokumentieren. Wenn das Segment nicht das erste Segment in der Kette ist (Zeilen 108-111), wird der Segmentsteuerblock als massengelöschtes freies Segment markiert, obwohl der Segment- Tabellenidentifikator 24 unverändert bleibt. Ein Nicht-Null- Tabellenidentifikator 24 wird benutzt, um anzuzeigen, daß das Segment nicht erneut zugeordnet werden kann, solange eine nicht festgeschriebene Massenlöschung für die vorher diesem Segment zugeordnete Tabelle im Gang ist. Der Endschritt für jedes Segment, in den Zeilen 107 und 111 der Tabelle 1, dient zum Markieren aller Datenseiten des Segments als massengelöscht, zur Anwendung, wenn diese Seiten anderen Tabellen zugewiesen werden. Die DO-Schleife zwischen den Zeilen 103 und 112 wird für jedes Segment der Tabelle durch Verfolgen der Kette der Segmentsteuerblöcke 20 wiederholt. Nach dem Bearbeiten des letzten Segments ist der Massenlöschvorgang abgeschlossen und kann festgeschrieben werden.
  • Eine Tabellenabwurfoperation, in der die Tabelle nicht für späteres Einschreiben von Daten beibehalten wird, arbeitet genau so wie eine Massenlöschung, mit dem Unterschied, daß auch das erste zugewiesene Segment für die Tabelle freigegeben wird, weil ja keine weiteren Daten in die Tabelle geschrieben werden.
  • Sperren und Lesen leerer Seiten minimieren
  • Die Hauptaufgabe der Erfindung ist der Versuch, das Sperren und Lesen von Datenseiten 18, die physikalisch oder logisch leer sind, zu minimieren. Eine "physikalisch" leere Seite enthält nur binäre Nullen - überhaupt keine Daten. Etwas ähnlich dazu enthält eine "logisch" leere Seite keine gültigen Daten, ist jedoch nicht auf binäre Nullen rückgesetzt Eine logisch leere Seite kann entstehen bei einer Massenlöschung (d.h. unqualifizierten Löschen aller Daten in einer Tabelle) oder durch ein qualifiziertes Löschen von nicht allen Daten der Tabelle. So enthalten physikalisch leere Seiten keine Daten, logisch leere Seiten enthalten nur veraltete Daten, und alle anderen Seiten sind teilweise oder ganz voll mit aktuellen (d.h. aktiven bzw. gültigen) Daten.
  • Zur Lösung dieser Aufgabe muß jeder Seitenstatus getrennt von der Seite 18 selbst gespeichert werden, so daß die Seite nicht gelesen werden muß, wenn sie leer ist. Diese Anzeige wird im Segmentsteuerblock 20 als Seitenstatusindikator 26 gespeichert. Für jede Seite 18 muß eine der fünf oben angeführten Statusanzeigen gespeichert werden. Jede Statusanzeige entspricht einem eindeutigen Zustand der Datenseite.
  • Die erste Statusanzeige, FULL, wird gesetzt, wenn keine weiteren Daten in die Seite 18 eingeschrieben werden können. Bei der Les-eoperation werden diese Seiten zunächst gesperrt und dann gelesen. FULL-Seiten werden von Einschreiboperationen ignoriert.
  • Die zweite Statusanzeige, PARTIALLY FULL, wird gesetzt, wenn eine Seite wenigstens einige aktuelle d.i. gültige Daten enthält. Bei einer Leseoperation werden diese Seiten zunächst gesperrt und dann normal gelesen, wie FULL-Seiten. Für Zeilen variabler Länge (d.i. Tabellenzeilen, die wenigstens eine Spalte variabler Länge enthalten) kann diese zweite Statusanzeige weiter in multiple Einstellungen unterteilt werden, um die Menge des auf der Datenseite belassenen freien Raums genauer darzustellen und somit die Nutzung des physikalischen Speicherraums durch Packen mehrerer Zeilen in die Datenseiten zu verbessern.
  • Die dritte Statusanzeige, UNFORMATTED, wird gesetzt für physikalisch leere Seiten, d.i. Seiten 18, die leer sind, wobei ihr Inhalt garantiert nur aus binären Nullen besteht. Wenn eine Raumabbildungsseite 14 zum ersten Mal formatiert wird, werden alle Datenseiten 18, die von dieser Raumabbildung erfaßt werden, auf diesen Zustand gesetzt, bevor diese Seiten benutzt werden können. Bei einer Leseoperation werden UNFORMATTED Seiten weder gesperrt noch gelesen, da sie keine Daten enthalten. Auf ähnliche Weise, wenn Daten in diese Seiten eingeschrieben werden sollen, werden sie vorher nicht gelesen, weil es keine vorher existierenden Daten gibt, um die man sich kümmern müßte. Die angeforderte Seite wird jedoch protokolliert, und ein Leerer-Puffer-Reset auf binäre Nullen wird der Seite zugewiesen und sie wird formatiert als Datenseite, die keine Daten enthält.
  • Die vierte Statusanzeige, MASS DELETE, wird gesetzt, wenn die Seite 18 wegen einer Massenlöschoperation (oder Tabellenabwurfoperation) logisch leer wird. Dieser Zustand zeigt an, daß der Inhalt der Seite ignoriert werden kann, auch wenn die Seite nicht auf binäre Nullen rückgestellt wurde. Seiten mit dieser Statusanzeige enthalten keine gültigen Daten. Wie oben schon für Tabelle 1 beschrieben, ändert die Massenlöschoperation alle Seitenstatusindikatoren 26 der Segmentsteuerblöcke 20 der Tabelle auf die vierte Statusanzeige MASS DELETE. Bei einer Leseoperation werden MASS DELETE Seiten weder gesperrt noch gelesen, da sie keine aktuellen Daten enthalten. Dabei besteht keine Gefahr, daß eine gleichzeitige Massenlöschung freigegeben und rückgängig gemacht wird, weil von der Massenlöschoperation die Tabelle exklusiv gesperrt wird, so daß kein anderer Anwender bzw. Programm eine Leseoperation für die Tabelle einleiten kann, während die Massenlöschung durchgeführt wird. Bei einer Einfügeoperation wird eine MASS DELETE Seite (wie eine UNFORMATTED Seite) nicht zuerst gelesen, weil sie nur veraltete Daten enthält. Jedoch bevor Daten in die Seite eingeschoben werden, wird ein leerer Puffer zugewiesen und die Seite wird formatiert. Bei diesem Formatierungsprozeß wird die Seite zunächst auf binäre Nullen rückgestellt und dann werden Kopf und Nachsatz der Seite auf die Anzeige gesetzt, daß sie keine Daten enthält.
  • Die fünfte Statusanzeige, QUALIFIED DELETE, wird gesetzt, wenn eine Seite 18 als Ergebnis einer Prädikats- oder qualifizierten Löschung logisch leer wird. Dieser Typ Löschanzeige bekommt einen Nachsatz durch Bedingungen, die üblicherweise bewirken, daß nur einige der Datensätze der Tabelle gelöscht werden. Bei einer Leseoperation werden QUALIFIED DELETE Seiten zunächst geprüft, um sicherzustellen, daß ihr logischer Leerzustand nicht durch eine nicht festgeschriebene Löschung bewirkt wurde. Diese Überprüfung wird bewirkt durch Aufrufen, Warten, und schließlich Anlegen einer Sperre an der Seite. Nach Anlegen der Sperre überspringt die Leseoperation die Seite, wenn sie noch immer logisch leer ist und nur veraltete Daten enthält. Wenn Daten in eine QUALIFIED DELETE Seite eingefügt werden müssen, wird die Seite gelesen.
  • Vergleichsabtastung in der segmentierten Vergleichsdatei
  • Tabelle 2 zeigt eine Pseudocode-Implementierung eines Leseoperationstyps, der als erfindungsgemäße Vergleichs- oder Tabellenabtastung bekannt ist. Eine Tabellenabtastung liest sequentiell eine Anzahl Datenseiten einer Tabelle. TABELLE 2 Pseudocode für Tabellenabtastung in segmentierter Tabellendatei
  • Die in Tabelle 2 in Pseudocode gezeigte Vergleichsabtastung besteht in wesentlichen aus einer äußeren DO-Schleife über die Segmente 16 der Tabelle, einer inneren DO-Schleife über die Datenseiten 18 jedes Segments, und innerhalb der inneren DO-Schleife aus einer SELECT-Struktur mit drei alternativen CASE-Befehlen auf den Zeilen 205, 208 und 233 zum Verarbeiten der Datenseite gemäß dem Wert in ihrem Statusindikator 22 im Segmentsteuerblock 20 der Raumabbildungsseite 14.
  • Die äußere DO-Schleife zwischen den Zeilen 201 und 243 verarbeitet jedes Segment 16 der Tabelle durch Verfolgen der Kette der Steuerblöcke 20 der Tabelle durch die Raumabbildungsseiten 14. Auf jede Raumabbildungsseite 14 mit einem Segmentsteuerblock 20 für ein Segment 16 der Tabelle wird auf Zeile 202 zugegriffen.
  • Die innere DO-Schleife zwischen den Zeilen 203 und 242 verarbeitet jede Datenseite 18 im aktuellen Segment 16, weil die segmentierte Tabellendatei verlangt, daß jedes Segnent nur Daten für eine gegebene Dateneinheit wie z.B. eine Tabelle, enthält. Die innere DO-Schleife liest die Liste der Datenseitenstatusindikatoren 26 des Segmentsteuerblocks 20 durch und verarbeitet jede entsprechende Datenseite 18 jedes Indikators gemäß dem Wert des Indikators mit Hilfe einer SELECT- Struktur.
  • Die SELECT-Struktur zwischen den Zeilen 204 und 241 beinhaltet drei alternative CASE-Befehle auf den Zeilen 205, 208 und 228 zum Verarbeiten der unterschiedlichen Werte des Datenseitenstatusindikators 26. Der erste CASE-Befehl auf Zeile 205 bewirkt, daß die Tabellenabtastoperation physikalisch leere Seiten mit dem Statusindikator 26 auf "UNFORMATTED" gesetzt, und wegen eines "MASS DELETE" logisch leere Datenseiten, bei denen daher ein Indikatorwert von "MASS DELETE" angezeigt wird, überspringt. Weil diese beiden Datenseitentypen 18 keine gültigen oder aktuellen Daten enthält, wird nichts getan, d.h. die Seite wird nicht gesperrt oder gelesen.
  • Der zweite CASE-Befehl auf Zeile 208 behandelt die Datenseiten 18, die wegen einer qualifizierten Löschung logisch leer sind. Wenn die Vergleichsabtastoperation eine Sperre auf Tabellenebene über die gesamte Tabelle angelegt hat, kann kein Anwender bzw. Programm gleichzeitig auf diese Tabelle zugreifen. Also können in den Zeilen 210-212 "QUALIFIED DELETE" Seiten ignoriert werden, weil sie nur veraltete Daten enthalten und ihr Inhalt von einem gleichzeitigen Anwender bzw. Programm nicht verändert werden kann. Wieder wird nicht notwendiges Sperren und Lesen vermieden. Wenn das Vergleichsabtasten keine Sperre auf Tabellenebene hat und statt dessen eine Sperre auf Seitenebene aktiviert ist, werden die Zeilen 213-227 ausgeführt, um ein gemeinsames Sperren auf die Seite anzufordern (Zeile 215), und die Seite enthält wenigstens einige aktuellen Daten wenn die Sperre angelegt wird (Zeile 216), um auf die Seite zuzugreifen und sie zu lesen (Zeilen 217-223). Wenn beim Anlegen der Sperre die Seite noch immer logisch leer ist und nur veraltete Daten enthält (Zeile 224), kann die Seite mit Sicherheit ignoriert werden und nichts wird gemacht, wobei wieder überflüssiges Sperren und Lesen einer logisch leeren Datenseite vermieden wird.
  • Der dritte CASE-Befehl in Zeile 228 erfaßt "PARTIALLY FULL" oder "FULL" Werte der Datenseitenstatusindikatoren 26, die Seiten 18 identifizieren, die mindestens einige aktuelle Daten enthalten. Falls nicht die Seitenabtastoperation eine Sperre der Tabelle auf Tabellenebene bewirkt hat (Zeilen 230- 232) wird die Seite im gemeinsamen Modus gesperrt (Zeile 233- 234). Dann wird, falls sie noch nicht in einem Puffer ist, auf die Datenseite zugegriffen und sie wird gelesen.
  • Die SELECT Struktur endet mit Zeile 241, und die innere DO- Schleife (Zeilen 203-242) wird für die nächste Datenseite 18 wiederholt. Sobald die letzte Datenseite des aktuellen Segments 16 durch die innere DO-Schleife bearbeitet ist, wird die äußere DO-Schleife (Zeilen 201-243) für das nächste Segment 16 der Tabelle wiederholt, bis die ganze Tabelle abgetastet ist.
  • Einfügen in die segmentierte Tabellendatei
  • Tabelle 3 zeigt eine Implementierung einer Methode zum Einfügen von Daten in eine Datenseite 18 in einer segmentierten Tabellendatei 16 in Pseudocode. TABELLE 3 Pseudocode zum Einfügen in segmentierte Tabellendatei
  • Die Pseudocode-Implementierung in Tabelle 3 einer Einfüge- Operation besteht aus zwei Hauptteilen: Ein Satz ineinander verschachtelter DO-Schleifen (Zeilen 301-321) zum Anordnen einer Datenseite 18, in die neue Daten eingefügt werden können; und eine nachfolgende Serie von Modulen (Zeilen 322- 329, 330-352, 353-356 und 357-368) zum Sperren, Formatieren, Lesen, Protokollieren und Einfügen der Daten in die Seite und zum Aktualisieren des Statusindikators 26 der Seite im Segmentsteuerblock 20 der Raumabbildungsseite 14.
  • Die verschachtelten DO-Schleifen zwischen den Zeilen 301 und 321 finden die erste freie Datenseite 18, in die die neuen Daten eingefügt werden können. Die Außenschleife zwischen den Zeilen 301 und 321 verbindet die Segmente 16 der Tabelle durch Verfolgen der Kette der Steuerblöcke 20 der Tabelle entlang den Raumabbildungsseiten 14 der Tabellendatei. Die innere DO-Schleife zwischen den Zeilen 303 und 320 liest der Reihe nach die Liste der Datenseitenstatusindikatoren 26 des Segmentsteuerblocks 20, bis eine nicht volle Seite 18 gefunden wird. Wenn ein Statusindikator 26, der auf nicht-FULL steht, gefunden wird (Zeilen 304) wird aus den DO-Schleifen herausgesprungen und die Reihe Module zum Sperren, Formatieren, Lesen usw. wird begonnen. Wenn alle Datenseiten 18 im Segment 16 als voll angegeben werden (Zeile 317), wird aus der inneren DO-Schleife herausgesprungen und die Außenschleife wird für das nächste Segment 16 wiederholt, bis eine nicht volle Datenseite 18 gefunden wird. Wenn keine nicht- FULL Seite gefunden wird, wird der Tabelle ein neues Segment zugeordnet (Zeilen 322-329).
  • Sobald die Datenseite 18 gesperrt ist, wird sie in den Zeilen 332-343 neu formatiert bzw. in den Zeilen 344-351 gelesen, wie gefordert. Die unternommene Aktion hängt ab vom Wert des Statusindikators 26 der Seite. Seiten 18 mit einem "UNFORMATTED" und "MASS DELETE Indikator 26 werden neu formatiert, ohne vorher gelesen zu werden, während Seiten mit den Indikatoren "PARTIALLY FULL" ODER "QUALIFIED DELETE" gelesen werden müssen, ohne neu formatiert zu werden. Eine SELECT- Struktur zwischen den Zeilen 331 und 352 enthält drei alternative CASE Befehle (Zeilen 332, 338 und 344), die entsprechend "UNFORMATTED", "MASS DELETE" und "PARTIALLY FULL" oder "QUALIFIED DELETE" Statusindikatoren 26 bearbeiten.
  • Wenn die Seite "UNFORMATTED" ist, braucht sie nicht gelesen zu werden bevor Daten eingefügt werden. Dementsprechend wird der Seite (Zeile 334) ein leerer Puffer (auf binäre Nullen gesetzt) zugewiesen, ein Format-Protokollrekord mit dem Protokollindikator REDO ONLY (Zeile 335) wird geschrieben, und der leere Puffer wird dann als eine Seite formatiert, die keine Daten enthält (Zeile 336). Dann ist der Puffer bereit zum Einfügen neuer Daten, um dann protokolliert und in einen physikalischen Speicher eingeschrieben zu werden.
  • MASS DELETE Seiten, die als Ergebnis einer Massenlöschung nur veraltete Daten enthalten, werden in den Zeilen 338-343 verarbeitet. Wie unformatierte Seiten werden massengelöschte Seiten nicht gelesen. Statt dessen wird ein leerer, auf binäre Nullen gesetzter Puffer der Seite zugewiesen, und ein Formatierungsprotokollrekord wird geschrieben (Zeilen 340- 341). Der Formatierungsprotokollrekord, der geschrieben wird, wenn eine massengelöschte Seite neu formatiert wird, beinhaltet den REDO ONLY Protokollindikator plus einen NONZERO PHYSICAL PAGE Protokollindikator. Der NONZERO PHYSICAL PAGE Protokollindikator wird bei einem Systemneustart benutzt, um nach inkonsistenten gespeicherten Daten zu suchen, wie nachstehend unter der Überschrift "Datenintegrität" beschrieben wird. Nachdem der Formatierungsprotokollrekord geschrieben ist, wird der jetzt leere Puffer mit Kopf- und Fußzeile formatiert für eine Seite, die keine Daten enthält (Zeile 342), unter Überstellen der Seite an das Protokoll- und Einfügemodul auf den Zeilen 353-364.
  • Wenn die Seite 18, auf die die neuen Daten geschrieben werden sollen, PARTIALLY FULL oder QUALIFIED DELETE (logisch leer wegen einer qualifizierten Löschung, die auf der Seite nur veraltete Daten hinterläßt) ist, darf die Seite 18 nicht neu formatiert werden sondern es muß statt dessen auf sie zugegriffen und sie gelesen werden, so daß ein "Vorher-Bild" ihres vorher existierenden Inhalts protokolliert werden kann. Der CASE Befehl auf der Zeile 344 identifiziert diese Seiten, auf die auf den Zeilen 345-351 zugegriffen wird und sie gelesen werden, und die dann im Protokollier- und Einfügemodul auf den Zeilen 353-364 bearbeitet werden.
  • Sobald die Datenseite 18 neu formatiert bzw., soweit erforderlich, gelesen wurde, schreibt das Protokollier- und Einfügemodul der Zeilen 353-364 einen Protokollrekord des Vorher- und Nachher-Bildes der Seite und fügt die neuen Daten in diese Seite ein. Das Einschreiben auf der Zeile 355 beinhaltet das Einschreiben des neuen Inhalts der Seite 18 in den physikalischen Speicher.
  • Der Schlußschritt der Einfügeoperation ist das Aktualisieren des Datenseitenstatusindikators 26 in ihrem Segmentsteuerblock 20 der Raumabbildungsseite 14 (Zeilen 357-364). Wenn das neue Einfügen die Seite soweit gefüllt hat, daß sie keine weiteren Daten aufnehmen kann (Zeile 358), wird der Seitenstatusindikator 26 auf "FULL" gesetzt (Zeile 359). Ansonsten wird der Satusindikator 26 der Seite auf "PARTIALLY FULL" gesetzt (Zeilen 360-361). Auf Zeile 362 wird ein Protokollrekord des Vorher- und Nachher-Bildes der Raumabbildungsseite geschrieben und der Segmensteuerblock 20, der den veränderten Datenseitenstatusindikator 26 enthält, wird auf der Raumabbildungsseite 14 aktualisiert (Zeile 363). Dieses Aktualisieren beinhaltet das Übertragen der aktualisierten Raumabbildungsseite 14 in den physikalischen Speicher.
  • Datenintegrität in der segmentierten Tabellendatei
  • Ein Datenbankverwaltungssystem muß verhindern, daß ein Anwender oder ein Anwendungsprogramm auf inkonsistente Daten zugreifen kann Diese Notwendigkeit der Datenintegrität ist eine wesentliche Forderung für ein brauchbares Datenbankverwaltungssystem. Eine Datenseite 18 kann inkonsistente Daten enthalten, wenn das System abstürzt während die Seite gerade aus einem Puffer in einen physikalischen Speicher übertragen wird, wobei dann der erste Teil der physikalisch abgespeicherten Seite bereits die aktualisierten Daten und der letzte Teil der Seite noch die veralteten Daten enthält.
  • Das bevorzugte Verfahren zum Erfassen dieses Zustandes ist, zwei Integritätsprüfbits zu unterhalten: Eines am Anfang der Seite und eines am Ende. In einer Seite, die konsistente Daten enthält, haben diese zwei Bits den gleichen Wert (d.h., beide sind ON oder beide sind OFF). Die Daten einer Seite werden als inkonsistent behandelt, wenn sich die Integritätsbits unterscheiden. Jedes Mal wenn eine Seite zum physikalischen Speicher übertragen wird, werden die Integritätsbits umgekehrt (geändert von OFF zu ON oder von ON zu OFF). Wenn die Seite nur teilweise übertragen wurde, stimmen die Integritätsbits nicht mehr überein.
  • Wie bereits gesagt, wird kein Lese-E/A (d.h. Zugriff auf eine Seite und Lesen) durchgeführt, wenn eine logisch leere Seite, die durch eine Massenlöschung erzeugt wurde, zu einer Einfügeoperation benutzt wird. Weil kein Lese-E/A durchgeführt wird, sind die Werte der Integritätsbits für die physikalisch abgespeicherte Seite nicht bekannt. Das läßt die Möglichkeit offen, daß eine Inkonsistenzbedingung nicht entdeckt wurde, wenn die wiederbenutzte Seite, die die neu eingefügten Daten enthält, nur teilweise in den physikalischen Speicher übertragen wurde, da das neue Integritätsbit am Kopf der Seite möglicherweise mit dem alten, nichtersetzten Integritätsbit am Ende der physikalisch gespeicherten Seite übereinstimmen kann.
  • Um diese Möglichkeit nicht auffindbarer inkonsistenter Daten auszuschließen, wird der NONZERO PHYSICAL PAGE Protokollindikator in den Seitenformat-Protokollrekord aufgenommen, der geschrieben wird, wenn eine massengelöschte Seite neu formatiert wird (Zeile 329 in Tabelle 3). Der NONZERO PHYSICAL PAGE Protokollindikator zeigt an, daß der Formatierungsprotokollindikator bei einem Systemneustart neu angelegt werden muß durch Ersetzen des Inhalts der physikalisch gespeicherten Seite durch binäre Nullen. Datenbankverwaltungssysteme, die Vorausschreibprotokolle anwenden, legen in der Regel einen Zeitstempelwert sowohl in die Seitenkopfzeile als auch in den Protokollrekord, sobald eine Seite aktualisiert wird. Ohne den NONZERO PHYSICAL PAGE Protokollindikator im Formatierungsprotokollrekord würde das System bei einem Neustart annehmen, daß die vorher nassengelöschte und jetzt aktualisierte Seite erfolgreich in den physikalischen Speicher übertragen wurde, selbst wenn in Wirklichkeit die Seite nur teilweise übertragen wurde, weil der Zeitstempel in der physikalisch gespeicherten Seite mit dem Zeitstempel des Protokollrekords übereinstimmen würde. Mit dem NONZERO PHYSICAL PAGE Protokollindikator setzt das System zunächst die Seite auf binäre Nullen und setzt sie dann zurück auf die neu eingefügten Daten. Dieses Verfahren zum Sichern der Datenintegrität in der segmentierten Tabellendatei 10 gründet sich auf die Anwendung des Vorausschreib- Protokollierens, in dem das Datenbankverwaltungssystem gezwungen ist, den aktualisierten Protokollrekord vor der Übertragung (an der Spitze) der aktualisierten Seite in den physikalischen Speicher zu schreiben.
  • Tabelle 4 zeigt eine Implementierung dieses Verfahrens zum Sichern der Datenintegrität in Pseudocode. TABELLE 3
  • Die in Tabelle 4 gezeigte Methode zum Sichern der Datenintegrität verwendet zwei gesonderte Module: Ein Modul zum Überprüfen der Integritätsbits vor dem Lesen der Daten von einer Seite, und ein zweites Modul zum Setzen der Integritätsbits, wenn neue Daten auf eine Seite geschrieben werden. Das erste Modul in den Zeilen 401-409 prüft die Integritätsbits der Seiten 18, wenn sie eben gelesen werden sollen (Zeile 401). Wenn die Integritätsbits am Anfang und am Ende der Seite nicht den gleichen Wert enthalten (Zeile 403), wird die Seite als beschädigt gekennzeichnet (Zeile 404). Beschädigte Seiten werden auf ihren letzten konsistenten Zustand rückgestellt durch Wiedererherstellen der Seite unter Verwendung ihres Protokollrekords (Zeile 405). Wenn die Integritätsbits der Seite konsistent sind, wird nichts getan (Zeilen 406-408) und die Seite wird unmittelbar normal gelesen.
  • Das zweite Modul der Datenintegritätsmethode (Zeilen 410-412) stellt die Integritätsbits zurück, wenn eine Seite aus einem Puffer in einen physikalischen Speicher übertragen werden soll (Zeile 410). Vor einer solchen Übertragung werden die Integritätsbits invertiert. Wenn die Bits augenblicklich ON sind, werden sie verändert (invertiert) zu OFF, und wenn sie augenblicklich OFF sind, werden sie invertiert zu ON (Zeile 401).
  • Mit dem obigen Verfahren zum Sichern der Datenintegrität in der segnentierten Tabellendatei 10 lassen sich die Verfahren der vorliegenden Erfindung zum Mininieren des Sperrens und des Lesens von Datenseiten dazu benutzen, die Anzahl der erforderlichen Seitenzugriffe bei Lese- und Einfügeoperationen signifikant zu reduzieren, um auf diese Weise die Leistung der Datenbankverwaltungssysteme meßbar zu verbessern.

Claims (5)

1. Verfahren zum Zugreifen auf Daten in einem physikalischen Speicherraum (10), bestehend aus zwei oder mehr Seiten (18), wobei das Verfahren aus den folgenden Schritten besteht:
(a) Abspeichern von Daten ausschließlich für ein einziges Datenelement auf einer beliebigen Daten-enthaltenden Seite;
(b) Abspeichern, getrennt von jeder Datenseite, des Status der betreffenden Seite; und
(c) Zugriff auf Seiten, die nur veraltete Daten aufgrund des Löschens aller Daten eines Datenelements enthalten, so als ob diese Seite keine Daten enthielte;
gekennzeichnet dadurch, daß das Verfahren ferner die folgenden Schritte enthält:
(d) Sperren einer Seite, die nur veraltete Daten enthält, wegen des Löschens von weniger als allen Daten des Datenelements, und Lesen dieser Seite nur wenn sie dann noch aktuelle Daten enthält.
2. Ein Verfahren zum Lesen von Daten gemäß Anspruch 1, das ferner die folgenden Schritte enthält:
(e) Sperren des Speicherplatzes während des Löschens aller Daten eines Datenelements;
und wobei Schritt (c) die folgenden Schritte enthält:
(c1) Sperren und Lesen einer Seite, die wenigstens einige aktuelle Daten enthält;
(c2) weder Sperren noch Lesen einer Seite, die keine Daten enthält; und
(c3) weder Sperren noch Lesen einer Seite, die nur veraltete Daten enthält, wegen des Löschens aller Daten eines Datenelements.
3. Ein Verfahren zum Einfügen von Daten gemäß Anspruch 1, das ferner die folgenden Schritte enthält:
(e) Sperren des Speicherplatzes während des Löschens aller Daten eines Datenelements;
und wobei Schritt (c) die folgenden Schritte enthält:
(c1) Vor dem Einfügen von Daten in eine Seite, die aktuelle Daten enthält, Lesen dieser Seite;
(c2) vor dem Einfügen von Daten in eine Seite, die nur veraltete Daten enthält wegen des Löschens von weniger als allen Daten eines Datenelements, Lesen dieser Seite;
(c3) Einfügen von Daten in eine Seite, die keine Daten enthält, ohne zuerst Lesen dieser Seite;
(c4) Einfügen von Daten in eine Seite, die nur veraltete Daten enthält wegen des Löschens von weniger als allen Daten eines Datenelements, ohne zuerst Lesen dieser Seite.
4. Ein Verfahren zum Zugreifen auf Daten gemäß Anspruch 1, das ferner die folgenden Schritte enthält:
(e) Sperren des Speicherplatzes während des Löschens aller Daten eines Datenelements;
(f) Sperren von zu löschenden Seiten während einer nichtqualifizierten Datenlöschung; und
(g) Sperren einer Seite, die nur veraltete Daten enthält, wegen einer qualifizierten Datenlöschung, und Lesen dieser Seite nur, wenn sie dann noch aktuelle Daten enthält;
und wobei Schritt (c) die folgenden Schritte enthält:
(c1) Sperren und Lesen einer Seite, die wenigstens einige aktuelle Daten enthält;
(c2) weder Sperren noch Lesen einer Seite, die keine Daten enthält;
(c3) weder Sperren noch Lesen einer Seite, die nur veraltete Daten enthält, als Ergebnis einer nichtqualifizierten Datenlöschung;
(c4) Einfügen von Daten in eine Seite, die keine Daten enthält ohne zuerst Lesen dieser Seite;
(c5) Einfügen von Daten in eine Seite, die nur veraltete Daten enthält, als Ergebnis des nichtqualifizierten Löschens von Daten, ohne zuerst Lesen dieser Seite;
(c6) vor dem Einfügen von Daten in eine Seite, die aktuelle Daten enthält, Sperren und Lesen dieser Seite; und
(c7) vor dem Einfügen von Daten in eine Seite, die nur veraltete Daten enthält, wegen des nichtqualifizierten Löschens von Daten, Sperren und Lesen dieser Seite.
5. Ein Verfahren zum Zugreifen auf Daten gemäß Anspruch 1, in dem Schritt (b) die folgenden Schritte enthält:
(b1) Speichern einer ersten Anzeige auf jede Seite, die ganz voll mit aktuellen Daten ist;
(b2) Speichern einer zweiten Anzeige auf jede Seite, die teilweise voll mit aktuellen Daten ist;
(b3) Speichern einer dritten Anzeige auf jede Seite, die keine Daten enthält;
(b4) Speichern einer vierten Anzeige auf jede Seite, die nur veraltete Daten enthält, als Ergebnis einer nichtqualifizierten Datenlöschung; und
(b5) Speichern einer fünften Anzeige auf jede Seite, die nur veraltete Daten enthält, als Ergebnis einer qualifizierten Datenlöschung;
und dann Durchführung der folgenden Schritte in beliebiger Reihenfolge:
(h) während des Durchsuchens von zwei oder mehr Datenseiten Sperren und Lesen von Seiten, die die erste oder die zweite Anzeige aufweisen;
(j) während dieses Durchsuchens weder Sperren noch Lesen einer Seite, die die dritte oder die vierte Anzeige aufweist;
(k) während dieses Durchsuchens Sperren einer Seite, die die fünfte Anzeige aufweist, und Lesen dieser Seite nur wenn sie aktuelle Daten enthält;
(l) Einschieben von Daten in eine Seite, die die dritte oder vierte Anzeige aufweist, ohne zuerst Lesen dieser Seite; und
(m) vor dem Einschieben von Daten in eine Seite, die die zweite oder die fünfte Anzeige aufweist, Sperren und Lesen dieser Seite.
DE68927142T 1988-07-15 1989-06-07 Verriegelungs- und Lese-Minimierung in einem segmentierten Speicherraum Expired - Lifetime DE68927142T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/219,514 US4961134A (en) 1988-07-15 1988-07-15 Method for minimizing locking and reading in a segmented storage space

Publications (2)

Publication Number Publication Date
DE68927142D1 DE68927142D1 (de) 1996-10-17
DE68927142T2 true DE68927142T2 (de) 1997-03-13

Family

ID=22819581

Family Applications (1)

Application Number Title Priority Date Filing Date
DE68927142T Expired - Lifetime DE68927142T2 (de) 1988-07-15 1989-06-07 Verriegelungs- und Lese-Minimierung in einem segmentierten Speicherraum

Country Status (4)

Country Link
US (1) US4961134A (de)
EP (1) EP0351387B1 (de)
JP (1) JPH0740239B2 (de)
DE (1) DE68927142T2 (de)

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5410691A (en) * 1990-05-07 1995-04-25 Next Computer, Inc. Method and apparatus for providing a network configuration database
CA2285089C (en) * 1991-11-12 2000-05-09 Ibm Canada Limited-Ibm Canada Limitee Logical mapping of data objects using data spaces
US5355477A (en) * 1991-12-23 1994-10-11 International Business Machines Corporation Method for updating a block using record-level locks by committing the update if the block has not been updated by another process otherwise spinning
JPH06175914A (ja) * 1992-09-21 1994-06-24 Eastman Kodak Co メモリ管理装置
JP3378594B2 (ja) * 1992-09-25 2003-02-17 富士通株式会社 データベース再配置を行う処理装置
US5418966A (en) * 1992-10-16 1995-05-23 International Business Machines Corporation Updating replicated objects in a plurality of memory partitions
JP2583010B2 (ja) * 1993-01-07 1997-02-19 インターナショナル・ビジネス・マシーンズ・コーポレイション 多層インデックス構造におけるローカルインデックステーブル及び大域インデックステーブルの間の一貫性を維持する方法
US5455944A (en) * 1993-03-16 1995-10-03 International Business Machines Corporation Method for managing logging and locking of page free space information in a transaction processing system
US5628023A (en) * 1993-04-19 1997-05-06 International Business Machines Corporation Virtual storage computer system having methods and apparatus for providing token-controlled access to protected pages of memory via a token-accessible view
US5619671A (en) * 1993-04-19 1997-04-08 International Business Machines Corporation Method and apparatus for providing token controlled access to protected pages of memory
JP3699733B2 (ja) * 1994-08-10 2005-09-28 株式会社日立製作所 タプル単位排他制御方式
US5761676A (en) * 1994-09-19 1998-06-02 Bmc Software, Inc. Method of removing unneeded data from DB2 logs and other data sets having displacement-dependent data
US5550973A (en) * 1995-03-15 1996-08-27 International Business Machines Corporation System and method for failure recovery in a shared resource system having a moving write lock
US6173306B1 (en) 1995-07-21 2001-01-09 Emc Corporation Dynamic load balancing
US5860137A (en) * 1995-07-21 1999-01-12 Emc Corporation Dynamic load balancing
US5960194A (en) * 1995-09-11 1999-09-28 International Business Machines Corporation Method for generating a multi-tiered index for partitioned data
US5692182A (en) * 1995-10-05 1997-11-25 International Business Machines Corporation Bufferpool coherency for identifying and retrieving versions of workfile data using a producing DBMS and a consuming DBMS
US5895491A (en) * 1996-08-19 1999-04-20 International Business Machines Corporation Apparatus and method for writing an item to a line in a memory table shared by multiple processors
US5832508A (en) * 1996-09-18 1998-11-03 Sybase, Inc. Method for deallocating a log in database systems
US5757919A (en) * 1996-12-12 1998-05-26 Intel Corporation Cryptographically protected paging subsystem
US5950211A (en) * 1997-01-03 1999-09-07 Ncr Corporation Discarded history method for solving streams message block leakages
JPH10260876A (ja) * 1997-03-19 1998-09-29 Hitachi Ltd データベースのデータ構造及びデータベースのデータ処理方法
US5930807A (en) * 1997-04-23 1999-07-27 Sun Microsystems Apparatus and method for fast filtering read and write barrier operations in garbage collection system
US6334134B1 (en) * 1998-08-18 2001-12-25 International Business Machines Corporation Insert performance on a multi-system transaction environment
US6606617B1 (en) 1998-09-24 2003-08-12 International Business Machines Corporation Optimized technique for prefetching LOB table space pages
US6363389B1 (en) 1998-09-24 2002-03-26 International Business Machines Corporation Technique for creating a unique quasi-random row identifier
US6694340B1 (en) 1998-09-24 2004-02-17 International Business Machines Corporation Technique for determining the age of the oldest reading transaction with a database object
US6343286B1 (en) 1998-09-24 2002-01-29 International Business Machines Corporation Efficient technique to defer large object access with intermediate results
US6343293B1 (en) 1998-09-24 2002-01-29 International Business Machines Corporation Storing the uncompressed data length in a LOB map to speed substring access within a LOB value
US6144970A (en) * 1998-09-24 2000-11-07 International Business Machines Corporation Technique for inplace reorganization of a LOB table space
US6366902B1 (en) 1998-09-24 2002-04-02 International Business Machines Corp. Using an epoch number to optimize access with rowid columns and direct row access
US6470359B1 (en) 1998-09-24 2002-10-22 International Business Machines Corporation Fast technique for recovering an index on an auxiliary table
US6115722A (en) * 1998-10-27 2000-09-05 Computer Associates Think, Inc. Method for checking tablespaces involved in referential integrity
US7756818B1 (en) * 1999-07-07 2010-07-13 Computer Associates Think, Inc. Database table recovery system
US6944615B2 (en) * 2001-06-28 2005-09-13 International Business Machines Corporation System and method for avoiding deadlock situations due to pseudo-deleted entries
EP1402372B1 (de) * 2001-07-05 2017-09-20 Panasonic Intellectual Property Management Co., Ltd. Aufzeichnungsgerät, medium, verfahren und entsprechendes rechnerprogramm
CA2414980A1 (en) * 2002-12-23 2004-06-23 Ibm Canada Limited-Ibm Canada Limitee Deferred incremental integrity maintenance of base tables having contiguous data blocks
US7107396B2 (en) * 2003-10-31 2006-09-12 International Business Machines Corporation Chaining of blocks for optimal performance with DASD (Direct Access Storage Devices) free nonvolatile updates
US7565217B2 (en) * 2005-04-01 2009-07-21 International Business Machines Corporation Traversal of empty regions in a searchable data structure
US7827374B2 (en) * 2006-06-12 2010-11-02 Oracle America, Inc. Relocating page tables
US7721068B2 (en) * 2006-06-12 2010-05-18 Oracle America, Inc. Relocation of active DMA pages
US7802070B2 (en) * 2006-06-13 2010-09-21 Oracle America, Inc. Approach for de-fragmenting physical memory by grouping kernel pages together based on large pages
US7698273B2 (en) * 2006-06-23 2010-04-13 Microsoft Corporation Solving table locking problems associated with concurrent processing
US7500074B2 (en) * 2006-06-30 2009-03-03 Sun Microsystems, Inc. Identifying relocatable kernel mappings
US7472249B2 (en) * 2006-06-30 2008-12-30 Sun Microsystems, Inc. Kernel memory free algorithm
US8087027B2 (en) * 2007-03-29 2011-12-27 International Business Machines Corporation Computer program product and system for deferring the deletion of control blocks
US20080243966A1 (en) * 2007-04-02 2008-10-02 Croisettier Ramanakumari M System and method for managing temporary storage space of a database management system
US8205062B2 (en) * 2009-10-14 2012-06-19 Inetco Systems Limited Tiered data management method and system for high performance data monitoring
GB0921851D0 (en) * 2009-12-15 2010-01-27 Geniedb Record operation mode setting
US9507670B2 (en) * 2010-06-14 2016-11-29 Veeam Software Ag Selective processing of file system objects for image level backups
US8874620B1 (en) * 2011-06-15 2014-10-28 Amazon Technologies, Inc. Data transfer optimization

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS605024B2 (ja) * 1979-09-04 1985-02-07 ファナック株式会社 情報処理方式
JPS57141752A (en) * 1981-02-26 1982-09-02 Fujitsu Ltd Resource occupying system
US4627019A (en) * 1982-07-08 1986-12-02 At&T Bell Laboratories Database management system for controlling concurrent access to a database
JPS59160251A (ja) * 1983-03-02 1984-09-10 Fujitsu Ltd デ−タベ−ス処理システムにおける空きスペ−ス管理制御方式
JPH0724036B2 (ja) * 1983-12-23 1995-03-15 株式会社日立製作所 データベース処理方法
JPS6285355A (ja) * 1985-10-09 1987-04-18 Nec Corp デ−タベ−ス空きスペ−ス管理方式
US4716528A (en) * 1986-02-03 1987-12-29 International Business Machines Corporation Method for managing lock escalation in a multiprocessing, multiprogramming environment

Also Published As

Publication number Publication date
JPH0740239B2 (ja) 1995-05-01
US4961134A (en) 1990-10-02
DE68927142D1 (de) 1996-10-17
EP0351387A3 (de) 1990-11-07
JPH0261733A (ja) 1990-03-01
EP0351387B1 (de) 1996-09-11
EP0351387A2 (de) 1990-01-17

Similar Documents

Publication Publication Date Title
DE68927142T2 (de) Verriegelungs- und Lese-Minimierung in einem segmentierten Speicherraum
DE69126066T2 (de) Verfahren und Gerät zur Optimierung des Logbuchaufhebungsgebrauchs
DE3854667T2 (de) Datenbasissystem mit einer Baumstruktur.
DE3784190T2 (de) Eintragung eines datenbasisindex in das journal zur verbesserten rueckstellung.
DE69604882T2 (de) Einzeltransaktionsverfahren für ein Dateiensystem mit Logging-Möglichkeit in einem Rechnerbetriebssytem
DE69222169T2 (de) Verfahren und vorrichtung zur datenerholung in mehrstufigen datenbanksystemen
DE69119222T2 (de) Datensicherung und Beseitigung in einem Datenverarbeitungssystem
DE4220198C2 (de) Transaktionsverarbeitungsverfahren für einen digitalen Computer und Transaktionsverarbeitungssystem
DE69126067T2 (de) Verfahren und Gerät zur Verwaltung von Zustandsidentifizierern zur effizienten Wiederherstellung
DE60213867T2 (de) Vorrichtung zur verwaltung von datenreplikation
DE69516538T2 (de) Speicherung von rechnerdaten
DE69128367T2 (de) System und Verfahren zur Transaktionsbearbeitung mit verminderter Verriegelung
DE102012216022B4 (de) Verwaltung einer Zeitpunktkopie-Beziehung für platzsparende Datenträger
DE69802437T2 (de) Feinkörniger übereinstimmungsmechanismus für optimistische parallelsteuerung mit verriegelungsgruppen
DE69621841T2 (de) Rechnersicherungssystem mit offenen Dateien
DE69130312T2 (de) Dateisystem mit Schreib/Lesespeicher und einmaligen Schreib- und mehrmaligen Lese-speicher
DE69507940T2 (de) Rechner-verfahren und gerät für asynchrone geordnete operationen
DE69615230T2 (de) Relationales Datenbanksystem und Verfahren mit grosser Verfügbarkeit der Daten bei der Umstrukturierung von Tabellendaten
DE68929132T2 (de) Datenbankverwaltungssystem und Verfahren hierfür
DE3853460T2 (de) Raumverwaltungsanordnung für das Datenzugriffssystem eines Dateizugriffsprozessors.
DE68926693T2 (de) System und Verfahren zur einem Systemfehler nachfolgenden Datenerholung in einer Datenbank eines Rechnersystems
DE3854384T2 (de) Verfahren zum Betreiben eines einen anteilig genutzten virtuellen Speicher verwendenden Multiprozessorsystems.
DE3688529T2 (de) Verfahren zur Auffrischung von Mehrspaltentabellen in einer relationellen Datenbank mit Mindestinformation.
DE602005004166T2 (de) Vorrichtung, system und verfahren zur reinitialisierung einer serialisierung von dateisystemen
DE69609862T2 (de) Datenbasiszugriff

Legal Events

Date Code Title Description
8364 No opposition during term of opposition