DE69131545T2 - Verfahren für den Zugriff auf gemeinsame Daten - Google Patents

Verfahren für den Zugriff auf gemeinsame Daten

Info

Publication number
DE69131545T2
DE69131545T2 DE69131545T DE69131545T DE69131545T2 DE 69131545 T2 DE69131545 T2 DE 69131545T2 DE 69131545 T DE69131545 T DE 69131545T DE 69131545 T DE69131545 T DE 69131545T DE 69131545 T2 DE69131545 T2 DE 69131545T2
Authority
DE
Germany
Prior art keywords
transaction
transactions
data
node
history file
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 - Fee Related
Application number
DE69131545T
Other languages
English (en)
Other versions
DE69131545D1 (de
Inventor
Chung C. Wang
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.)
Texas Instruments Inc
Original Assignee
Texas Instruments Inc
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 Texas Instruments Inc filed Critical Texas Instruments Inc
Application granted granted Critical
Publication of DE69131545D1 publication Critical patent/DE69131545D1/de
Publication of DE69131545T2 publication Critical patent/DE69131545T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • 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/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2336Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
    • G06F16/2343Locking methods, e.g. distributed locking or locking implementation details
    • 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

Landscapes

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

Description

    TECHNISCHES GEBIET DER ERFINDUNG
  • Diese Erfindung bezieht sich allgemein auf das Gebiet der Steuerung gleichzeitig ablaufender Zugriffe auf Datenbanken und insbesondere auf eine Vorrichtung und ein Verfahren zum Zugreifen auf gemeinsam genutzte Daten.
  • HINTERGRUND DER ERFINDUNG
  • Computerprogramme werden in weit verbreitetem Maße von Unternehmen verwendet, um auf Datenbanken zuzugreifen, um Geschäftstransaktionen durchzuführen wie das Einzahlen auf ein Sparkonto oder das Abheben von einem Sparkonto, die Reservierung oder der Kauf eines Flugtickets, der Kauf oder der Verkauf einer Versicherung, etc.. Jede dieser Geschäftstransaktionen setzt den ordentlichen Zustand der Daten in den Datenbanken voraus, d. h., daß der Saldo auf dem Sparkonto den richtigen Wert nach dem Einzahlen oder Abheben reflektieren muß. Jedoch greifen bei den oben beschriebenen Geschäftstransaktionen mehrere gleichzeitig ablaufende Computerprogramme auf diese Datenbanken zu und verändern diese. Diese gleichzeitig ablaufenden Programme verschachteln ihren Zugriff auf die Datenbanken, was dazu führen kann, daß der Datenbankzugriff eines Programms den Zugriff auf die gleiche Datenbank durch ein anderes Programm stört. Solche Interferenzen können zu fehlerhaften Daten in den Datenbanken führen.
  • Zur Zeit gibt es Protokolle, die dazu dienen, durch kollidierende Programme verursachte derartige Datenbankfehler zu vermeiden. Ein solches Protokoll ist z. B. ein statisches zweiphasiges Verriegelungsschema. Bei einer mehrere Schritte umfassenden Transaktion greifen z. B. einige Schritte auf wenigstens ein Datenelement in einer Datenbank zu. Das statische zweiphasige Verriegelungsschema würde dafür sorgen, daß alle die Datenelemente, auf die zugegriffen werden soll, "verriegelt" werden, bevor irgendwelche anderen Schritte der Transaktion durchgeführt werden, um irgendwelche anderen Transaktionen davon abzuhalten, auf die Datenelemente zuzugreifen und sie zu verändern. Die Datenelemente werden sofort nach dem letzten Schritt der Transaktion "entriegelt".
  • Ein ähnliches Protokoll, das dynamische zweiphasige Verriegelungsschema, verriegelt jedes Datenelement, auf das die Transaktion zugreifen soll, unmittelbar vor jedem Zugriffsschritt und hebt dann die Verriegelungen sämtlicher Datenelemente sofort nach dem letzten Schritt der Transaktion auf.
  • Sowohl das statische als auch das dynamische zweiphasige Verriegelungsschema weisen eine erste Phase auf, während der Verriegelungen an den erforderlichen Datenelementen durchgeführt werden, und eine zweite Phase, während der sämtliche Verriegelungen aufgehoben werden. Durch Verriegeln der Datenelemente wird eine Form der Ablaufsteuerung erreicht, da nur die Programme, bei denen sämtliche ihrer erforderlichen Datenelemente verriegelt sind, bis zum Ende durchgeführt werden. Andere Programme, bei denen nicht sämtliche ihrer Datenelemente verriegelt sind, da wenigstens eines von einem anderen Programm verriegelt wurde, müssen warten. Mit anderen Worten führt das Verriegelungsschema letzten Endes dazu, daß gleichzeitig ablaufende Programme nacheinander durchgeführt werden.
  • Ein Problem, das sich aus dem zweiphasigen Verriegelungsschema ergibt, ist die Verminderung des Durchsatzes an ausgeführten Programmen. Das wäre beispielsweise der Fall, wenn die Transaktionen X und Y auf das Datenelement A zugreifen müssen und die Transaktion X das Datenelement A für sich verriegelt. Da die Verriegelung des Datenelements A nicht aufgehoben werden wird, bis der allerletzte Schritt der Transaktion X abgeschlossen ist, muß die Transaktion Y auf das Ende der Transaktion X warten, selbst wenn der Schritt der Transaktion X, der mit dem Datenelement A verbunden ist, längst abgeschlossen ist. Aus der vorhergehenden Darstellung ergibt sich, daß der gleichzeitige Ablauf der Programme nicht optimal gestaltet ist, um einen hohen Durchsatz zu erzielen, wenn eine zweiphasige Verriegelung verwendet wird. Es gibt häufig ein Datenelement, auf das jede Transaktion zugreifen muß, z. B. eine Verlaufsdatei, die alle Transaktionen aufzeichnet. Bei der Verwendung des zweiphasigen Verriegelungsschemas wird ein Flaschenhals oder Engpaß bei diesem Datenelement erzeugt, da alle Transaktionen auf den Abschluß der Transaktion warten müssen, die gerade das Datenelement für sich verriegelt. Daher sind bei zweiphasigen Verriegelungsschemata Engpaßerkennungsmethoden und eine spezielle Handhabung erforderlich, damit die blockierten Transaktionen nicht während der gesamten Zeitdauer der Transaktion warten müssen, die gerade für sich das Engaßdatenelement verriegelt hat.
  • Ein anderes verwendetes Protokoll zur Serialisierung von Datenbanktransaktionen ist das Baum- und Pfadprotokoll. Bei den Baum- und Pfadprotokollen muß auf die Datenelemente gemäß einer inhärenten und speziellen Sequenz zugegriffen werden. Die Baum- und Pfadprotokolle nutzen das vorhersehbare Zugriffsverhalten aus, um den Datenelementzugriff zu serialisieren. Ein Datenelement in einer Baum- oder Pfadstruktur kann verriegelt sein und durch Zugriff erreicht werden und das Datenelement, das ihm in der Sequenz folgt, wird dann verriegelt, bevor die Verriegelung des vorherigen Datenelements aufgehoben wird. Obwohl die Baum- und Pfadprotokolle nicht zweiphasig sind und daher nicht unter dem Problem des verminderten Durchsatzes, das oben beschrieben wurde, leiden, sind diese Protokolle nur bei solchen Datenbanken anwendbar, auf die in einer vorherbestimmten Reihenfolge zugegriffen wird. Daher lassen sich die Baum- und Pfadprotokolle bei Datenelementen nicht wirksam einsetzen, die keine inhärente Zugriffsreihenfolge aufweisen.
  • Demgemäß besteht ein Bedarf an einem Verriegelungsschema, das den gleichzeitigen Ablauf mehrerer Transaktionen noch besser ausnutzt, um den Durchsatz zu erhöhen, und das sich nicht auf die inhärente Reihenfolge der Daten gründet.
  • Die "Proceedings of the 7th ACM SIGACT-SIGMOD-SIGART Symposium on Database Systems", Seiten 135-141, auf denen sich der Oberbegriff des Anspruchs 1 gründet, offenbaren einen Serialisierungsalgorithmus, bei dem: jede Transaktion durch einen Knoten auf einem Graph repräsentiert wird; und die Beschränkung, daß eine Transaktion ein Datenelement lesen muß, nachdem eine andere Transaktion auf dieses Datenelement geschrieben hat, durch eine gerichtete Kante repräsentiert wird, die die zwei Knoten verbindet. Wenn jeder Schritt sein Ziel erreicht hat, werden notwendige neue Kanten zu dem Graph hinzugefügt. Falls ein Schritt nicht hinzugefügt werden kann, ohne einen Kreis zu erzeugen, werden der Knoten für die Transaktion, zu der dieser Schritt gehört und alle mit diesem Knoten verbundenen Kanten gelöscht.
  • "Lecture Notes in Computer Science No. 344, Graph Theoretic Concepts in Computer Science: proceedings of the International Workshop WG '88", Seiten 107-121 beschreibt das Testen für die Serialisierbarkeit durch Aufbau eines solchen Graphen und durch Durchführen eines Tests daraufhin, ob er azyklisch ist.
  • Die vorliegende Erfindung gemäß den beigefügten Ansprüchen schafft ein Verfahren zur Steuerung des zeitlichen Ablaufs von wenigstens zwei gleichzeitig ablaufenden Transaktionen, die auf gemeinsam genutzte Daten zugreifen, bei dem: eine Verlaufsdatei gebildet wird, die den gemeinsam genutzten Daten zugeordnet ist und alle Zugriffstransaktionen der Reihe nach auflistet; aus der Verlaufsdatei ein Serialisierungsgraph gebildet wird, der die Abhängigkeiten zwischen den Transaktionen aufzeigt; ein Kreis in dem Serialisierungsgraph gesucht wird; und als Reaktion auf den Suchschritt ein durch die Transaktionen gebildeter Kreis erkannt wird; das dadurch gekennzeichnet ist, daß alle Transaktionen in dem Kreis und alle von diesen abhängigen Transaktionen abgebrochen werden.
  • Es ist gemäß der vorliegenden Erfindung möglich, den gleichzeitigen Ablauf von Transaktionen, die auf gemeinsam genutzte Daten zugreifen, zu verbessern und den Durchsatz solcher Transaktionen zu erhöhen.
  • Es ist gemäß der vorliegenden Erfindung möglich, eine serialisierbare Ablaufsteuerung für die Ausführung von Transaktionen zu schaffen, ohne auf die inhärente Zugriffsreihenfolge der Daten zu bauen, und die vorliegende Erfindung ist daher bei beliebigen gemeinsam genutzten Daten anwendbar.
  • Es ist darüber hinaus gemäß der vorliegenden Erfindung möglich, es jeder Transaktion zu ermöglichen, die Art des gewünschten Verriegelungsschemas dahingehend zu spezifizieren, ob es optimistisch oder pessimistisch sein soll.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Um die vorliegende Erfindung besser verstehen zu können, wird Bezug auf die beigefügten Zeichnungen genommen, in denen:
  • Fig. 1 ein azyklischer Transaktionsserialisierungsgraph ist, und
  • Fig. 2 ein Transaktionsserialisierungsgraph ist, der einen Kreis darstellt.
  • GENAUE BESCHREIBUNG DER ERFINDUNG
  • In der TABELLE 1 sind drei gleichzeitig ablaufende Transaktionen A, B und C mit ihren jeweiligen Transaktionsschritten dargestellt. Eine Transaktion kann als Ausführung eines Programms definiert werden, das auf eine gemeinsam genutzte Datenbasis zugreift. Ferner kann eine Datenbasis als eine Sammlung von Datenelementen definiert werden, von denen jedes einen Wert aufweist. Typischerweise können Transaktionen den Wert von Datenelementen in einer Datenbasis verändern, indem sie einen anderen Wert an seine Stelle schreiben. Am Ende der Programmausführung wird ein Ausführungs- oder Abbruchschritt durchgeführt. Der Ausführungsschritt zeigt an, daß das Programm normal beendet wurde und sämtliche seiner Wirkungen permanent sein sollten. Dagegen zeigt der Abbruchschritt an, daß die Transaktion nicht in normaler Weise beendet wurde, was eine Reihe von Gründen haben kann, und daß sämtliche Wirkungen des Programms gelöscht sein sollten.
  • Bei der in der linken Spalte dargestellten Transaktion A folgen drei Schritte aufeinander: Verriegeln eines Datenelements x, Schreiben eines Werts in das Datenelement x und Freigeben der Verriegelung des Datenelements x.
  • Darauf verriegelt die in der mittleren Spalte dargestellte Transaktion B auch das Datenelement x und ein zweites Datenelement y, bevor der Wert des Datenelements x gelesen wird, und schreibt in das Datenelement y. Die Transaktion B hebt dann die Verriegelungen der Datenelemente x und y auf.
  • Die in der äußersten rechten Spalte dargestellte Transaktion C greift auf die Datenelemente y, x und z zu. Die Transaktion C beginnt damit, daß sie die Datenelemente y, x und z ver riegelt, liest dann den Wert der Datenelemente y und x und schreibt dann in das Datenelement z. Die Verriegelungen der Datenelemente y, x und z werden dann aufgehoben. TABELLE 1 TABELLE 2 TABELLE 3 TABELLE 4
  • Die TABELLE 2 listet alle Transaktionen auf, die auf das Datenelement x einwirken. Sie zeigt in einer Aufeinanderfolge die Transaktion A, die in das Datenelement x schreibt, gefolgt von den Transaktionen B und C, die das Datenelement x lesen.
  • Die Tabelle 2 kann eine Verlaufsdatei darstellen, die mit jedem Datenelement x verbunden ist und eine Liste aktiver Transaktionen führt, nämlich wie jede Transaktion das Datenelement x verriegelt und freigibt, wobei die Transaktion noch nicht ausgeführt oder abgebrochen ist. Wenn eine Transaktion ausgeführt oder abgebrochen wurde, wird ihr entsprechender Eintrag in der Verlaufsdatei gelöscht.
  • Entsprechend zeigt die TABELLE 3 die gegenwärtig aktiven Transaktionen, die dem Datenelement y zugeordnet sind. Wie in der Tabelle 1 dargestellt, beschreibt die Transaktion B das Datenelement y und die Transaktion C liest daraufhin das Datenelement y. Die TABELLE 4, die eine Verlaufsdatei für das Datenelement z darstellt, zeigt, daß die Transaktion C gegenwärtig aktiv ist und das Datenelement z beschrieben hat.
  • Aus den jedem Datenelement x, y und z zugeordneten Verlaufsdateien kann ein Transaktionsserialisierungsgraph aufgebaut werden, um die möglicherweise bestehenden Abhängigkeiten zwischen den Transaktionen A, B und C aufzuzeigen. In der Fig. 1 zeigt ein Transaktionsserialisierungsgraph 10 die Abhängigkeiten zwischen den durch die Transaktionen A, B und C ausgeführten Schritten. Die Transaktionen A, B und C sind durch Knoten 11-13 in dem Graph 10 dargestellt. Zwischen dem Knoten 11 und dem Knoten 12 ist eine gerichtete Kante 14 dargestellt, die vom Knoten 12 zum Knoten 11 verläuft und eine Abhängigkeit der Transaktion B von der Transaktion A anzeigt. Die Transaktion B ist von der Transaktion A abhängig, da sie den Wert des Datenelements x liest, der durch die Transaktion A geschrieben wird. Daher ist die Richtigkeit des Schritts, bei dem die Transaktion B den Wert des Datenelements x liest, davon abhängig, ob die Transaktion A ausgeführt wird oder abgebrochen wird. Wenn die Transaktion A durchgeführt wird, ist der Schritt in der Transaktion B, der den Wert des Datenelements x, der durch die Transaktion A geschrieben wurde, liest, korrekt. Wenn die Transaktion A abgebrochen wird, wird der Schritt in der Transaktion B, der den Wert des Datenelements x liest, in unkorrekter Weise den Wert dieses Elements lesen, und daher sollte die Transaktion B abgebrochen werden.
  • In einer ähnlichen Weise hängt die Transaktion C von der Transaktion B ab, was durch eine gerichtete Kante 15 vom Knoten 13 zum Knoten 12 dargestellt ist. Betrachtet man die TABELLE 3, so ist zu erkennen, daß die mit dem Datenelement y verbundene Verlaufsdatei zeigt, daß die aktuell aktive Transaktion B einen Wert in das Datenelement y schreibt, und daß die daraufhin aktive Transaktion C den Wert, der durch die Transaktion B geschrieben wurde, liest. Die Transaktion C ist also von der Transaktion A abhängig, wie es in der Tabelle 2 dargestellt ist, wobei die Transaktion C den Wert des Datenelements x liest, der durch die Transaktion A geschrieben wurde. Die Abhängigkeit ist durch eine gerichtete Kante 16 vom Knoten 13 zum Knoten 11 in dem Transaktionsserialisierungsgraphen 10 dargestellt. Obwohl, wie in der TABELLE 4 dargestellt, die Transaktion C auch einen Wert in das Datenelement z schreibt, ist keine weitere Transaktion von diesem Schritt der Transaktion C abhängig. Außerdem ist dieser Schritt von keiner weiteren anderen Transaktion abhängig, so daß er nicht in dem Transaktionsserialisierungsgraphen 10 dargestellt ist.
  • Wenn der Transaktionsserialisierungsgraph 10 aktualisiert wird, um die Abhängigkeiten der aktiven Transaktionen zu zeigen, wird er nach Kreisen durchsucht. Auf dem Gebiet der Graphentheorie wird ein Kreis als ein einfacher Weg definiert, bei dem der erste Knoten und der letzte Knoten übereinstimmen. Auf dem Gebiet der Computerwissenschaften sind Algorithmen zum Suchen nach Kreisen in einem gerichteten Graphen bekannt, z. B. wird ein solcher Algorithmus verwendet, um Kreise in einem Wait-for-Graphen in Blockierungserkennungsalgorithmen (deadlock detection algorithms) zu suchen. Solche Kreiserkennungsalgorithmen können hier verwendet werden. Für weitere Einzelheiten kann auf die entsprechenden Bücher wie "Concurrency Control and Recovery in Database Systems" von P. A. Berstein et al. und "The Theory of Database Concurrency Control" von Christos Papadimitriou zurückgegriffen werden.
  • Durch einen Algorithmus, der nach Kreisen sucht, kann bestimmt werden, daß der Transaktionsserialisierungsgraph 10 keinen Kreis enthält und daher ein azyklischer Graph ist. Ein Transaktionsserialisierungsgraph, der keinen Kreis enthält, weist dann serialisierbare Transaktionen auf. Mit anderen Worten kann eine Transaktion dann, wenn sie nicht Teil eines Kreises in einem Transaktionsserialisierungsgraphen ist und nicht von anderen aktiven Transaktionen abhängt, ausgeführt werden, so daß ihre Wirkungen dauerhaft gemacht werden können.
  • Hängt die Transaktion A nicht von einer anderen Transaktion ab, so kann sie ausgeführt werden. Die in der TABELLE 2 dargestellte Verlaufsdatei des Datenelements x wird durch Löschen der Transaktion A aktualisiert, da sie nicht länger aktiv ist. Der Transaktionsserialisierungsgraph 10 wird entsprechend durch Löschen des Knotens 11, der Kante 14 und der Kante 16 aktualisiert. Die Transaktion B kann nun einen Ausführungsschritt für ihre Beendung durchführen, da sie auch kein Teil eines Kreises ist und nicht von anderen aktiven Transaktionen abhängt. Die TABELLEN 2 und 3 werden wiederum durch Löschen der Transaktion B aktualisiert, und der Knoten 12 und die Kante 15 werden aus dem Graphen 10 gelöscht. Die Transaktion C kann auch durchgeführt werden, da sie die oben aufgeführten Ausführungsbedingungen erfüllt. Daher werden die Eintragungen der Transaktion C in den Verlaufsdateien der Datenelemente x, y und z (TABELLEN 2, 3 und 4) gelöscht. Der Graph 10 wird ferner modifiziert, um die Ausführung der Transaktion C aufzuzeigen. TABELLE 5 TABELLE 6 TABELLE 7 TABELLE 8
  • In der Tabelle 5 tritt ein anderes Szenario auf. Die Transaktion A, deren Schritte in der linken Spalte dargestellt sind, verriegelt ein Datenelement x, schreibt in ein Datenelement x und gibt ein Datenelement x frei. Das spiegelt sich in einem Eintrag in einer Verlaufsdatei des Datenelements x wieder, die in der Tabelle 6 dargestellt ist. Daraufhin verriegelt die Transaktion B die Datenelemente x und y, liest das Datenelement x, schreibt in das Datenelement y und gibt dann die Datenelemente x und y frei. Entsprechend werden die Zugriffe auf die Datenelemente x und y durch die Transaktion B in den Tabellen 6 und 7 wiedergegeben. In der Fig. 2 ist ein zweiter Transaktionsserialisierungsgraph 20, der die Knoten 21-23 zeigt, die die Transaktionen A, B und C repräsentieren, mit einer gerichteten Kante 24 aktualisiert, um die Abhängigkeit der Transaktion B von der Transaktion A darzustellen.
  • Die Transaktion C erfordert auch Verriegelungen der Datenelemente y und z, um das Datenelement y zu lesen und das Datenelement z zu beschreiben und gibt daraufhin die Datenelemente y und z frei. Das Erfordernis, das Datenelement y zu lesen, erzeugt eine Abhängigkeit der Transaktion C von der Transaktion B, da die Transaktion C das Datenelement y liest, dessen Wert durch die Transaktion B geschrieben wurde, was in der TABELLE 7 dargestellt ist. Entsprechend wurde eine gerichtete Kante 25 vom Knoten 23 zum Knoten 22 zum Transaktionsserialisierungsgraphen 20 hinzugefügt, um die Transaktionen C bzw. B darzustellen.
  • Zurück zur TABELLE 5, in der dargestellt ist, daß die Transaktion A dann das Datenelement z verriegelt, dessen Wert ausliest und die Verriegelung aufhebt. Die TABELLE 8, die eine Verlaufsdatei des Datenelements z darstellt, zeigt, daß die Transaktion C das Datenelement z beschrieben hat, bevor die Transaktion A dieses gelesen hat. Daher hängt die Transaktion A von der Transaktion C ab. In dem Transaktionsserialisierungsgraphen 20 ist eine dritte gerichtete Kante 26 von dem Knoten 21 zum Knoten 23 hinzugefügt, die diese Abhängigkeit darstellt.
  • Wird der Graph 20 nach Kreisen durchsucht, so zeigt sich, daß ein Weg von der Transaktion A zur Transaktion C, zur Transaktion B und zurück zur Transaktion A existiert. Daher ist der Transaktionsserialisierungsgraph 20 ein zyklischer Graph, wobei ein Kreis von Abhängigkeiten existiert. Da die Transaktionen A, B und C in dem Kreis des Graphen 20 von den Ergebnissen der jeweils anderen Transaktionen abhängen, sind die Transaktionen nicht serialisierbar. Um eine serialisierbare Ausführung sämtlicher Transaktionen in einem Transaktionsserialisierungsgraphen zu erzielen, muß jede Transaktion in dem Kreis und die davon abhängigen Transaktionen abgebrochen werden und erneut gestartet werden. Daher müssen die Transaktionen A, B und C abgebrochen und erneut gestartet werden, was in der TABELLE 5 dargestellt ist.
  • Um die wiederholte Bildung eines Kreises in einem Transaktionsserialisierungsgraphen durch die erneut gestarteten Transaktionen zu verhindern, sollten die erneut gestarteten Transaktionen eine pessimistische Verriegelungsstrategie verwenden, z. B. das zweiphasige Verriegelungsschema, das oben dargestellt wurde. Die Verwendung der zweiphasigen Verriegelung garantiert serialisierbare Transaktionsausführungen.
  • Insgesamt ist zu erkennen, daß durch die Verwendung eines Transaktionsserialisierungsgraphen jede Transaktion Verriegelungen an Datenelementen sofort freigibt, wenn auf ein Datenelement zugegriffen wurde und es nicht länger benötigt wird. Dadurch braucht keine Transaktion mehr während einer längeren Zeitdauer auf eine Verriegelung eines Datenelements zu warten. Diejenigen Transaktionen, die sich nicht serialisieren lassen, werden erkannt und aufgelöst durch erneutes Starten dieser Transaktionen unter Verwendung von konservativeren Verriegelungsprotokollen. Bei dem vorliegenden Verriegelungsschema ist es möglich, daß Transaktionen in einem Pipeline-Schema, d. h. in serialisierbarer Weise, durchgeführt werden, um den Durchsatz zu erhöhen. Außerdem sind bei dem vorliegenden Verriegelungsschema keine speziellen Handhabungsprozeduren für Engpaßprobleme erforderlich.
  • Es ist außerdem wichtig zu erkennen, daß es die vorliegende Erfindung ermöglicht, jede Transaktion als optimistisch oder pessimistisch zu bestimmen, wobei pessimistische Transaktionen konservativere Verriegelungsprotokolle verwenden. Die Verwendung von Pfad- oder Baumprotokollen in strukturierten Datenelementen ist ebenfalls möglich.
  • Kooperative Transaktionen sind eine weitere Klasse von Transaktionen, bei denen eine Gruppe von kooperativen Transaktionen einen konsistenten Datenbasiszustand auf einen neuen konsistenten Zustand abbildet. Mit anderen Worten können kooperative Transaktionen von den Zwischenschritten jeweils anderer Transaktionen abhängen und sind daher nicht serialisierbar. Es kann jedoch eine Gruppe kooperativer Transaktionen als eine Transaktion behandelt werden, und es wird der Gruppe kooperativer Transaktionen ermöglicht, zulässige Kreise in einem Transaktionsserialisierungsgraphen zu bilden, wobei sie nicht abgebrochen werden.
  • Merkmale der bevorzugten Ausführungsform
  • Verschiedene wichtige Merkmale der bevorzugten Ausführungsform sind unten zusammengefaßt.
  • Ein Verriegelungsschema für die Steuerung des Zugriffs von wenigstens zwei gleichzeitig ablaufenden Transaktionen auf eine gemeinsam genutzte Datenbasis mit den Schritten: Es wird nach einer Verriegelung an einem Datenelement in der gemeinsam genutzten Datenbasis angefragt, es wird das Datenelement in Abhängigkeit von seiner Verfügbarkeit verriegelt, es wird in einer Verlaufsdatei, die dem Datenelement zugeordnet ist, die Verriegelungstransaktion aufgezeichnet, es wird aus der Verlaufsdatei ein Serialisierungsgraph aufgebaut, es wird auf das Datenelement zugegriffen, es wird sofort nach dem Schritt des Zugriffs auf das Datenelement die Verriegelung des Datenelements gelöst, es wird der Serialisierungsgraph nach dem Vorhandensein eines Kreises durchsucht und es wird die Transaktion durchgeführt, wenn kein Kreis vorhanden ist. Dieses Verfahren umfaßt darüber hinaus den Schritt des Abbrechens einer Transaktion, die einen Kreis bildet, in Abhängigkeit von dem Vorhandensein eines Kreises.
  • Ein Verfahren zur Steuerung des zeitlichen Ablaufs von wenigstens zwei gleichzeitig ablaufenden Transaktionen, die auf gemeinsam genutzte Daten zugreifen, mit den Schritten: Es wird eine Verlaufsdatei für die gemeinsam genutzten Daten aufgebaut, die jede Zugriffstransaktion aufzeigt, es wird aus der Verlaufsdatei ein Serialisierungsgraph aufgebaut, der die Abhängigkeiten zwischen den Transaktionen aufzeigt, es wird ein Kreis in dem durch die Transaktionen gebildeten Serialisierungsgraphen erkannt, es werden die Transaktionen in Abhängigkeit von der Erkennung eines Kreises abgebrochen und die Transaktionen in dem erkannten Kreis neu gestartet. Darüber hinaus umfaßt der Schritt des Aufbaus der Verlaufsdatei den Schritt des Aufzeichnens der Art des Datenzugriffs. Der Aufzeichnungsschritt umfaßt das Aufzeichnen eines Lese- oder Schreibzugriffs, je nachdem wie er durch die Transaktionen durchgeführt wird. Die gemeinsam genutzten Daten bestehen aus mehreren Datenelementen, und der Schritt des Aufbauens einer Verlaufsdatei umfaßt das Bilden einer Verlaufsdatei für jedes der mehreren Datenelemente. Der Schritt des Aufbauens eines Serialisierungsgraphen umfaßt die Bildung eines Knotens für jede aktive Transaktion und einer gerichteten Kante von einem ersten Knoten, der eine erste Transaktion repräsentiert, zu einem zweiten Knoten, der eine zweite Transaktion repräsentiert, um die Abhängigkeit der ersten Transaktion von der zweiten Transaktion darzustellen. Der Schritt des Suchens nach einem Kreis umfaßt das Suchen nach einem einfachen Weg, der von einem Knoten ausgeht und an dem gleichen Knoten endet. Das Verfahren kann darüber hinaus Schritte zum Durchführen eines noch vorsichtiger arbeitenden (konservativen) Verriegelungsschemas für die neu gestarteten Transaktionen, z. B. eines zweiphasigen Verriegelungsschemas, umfassen. Der Schritt des Abbrechens bricht alle Transaktionen in dem erkannten Kreis ab und alle Transaktionen, die von den Transaktionen in dem Kreis abhängen. Das Verfahren kann darüber hinaus die Schritte des Verriegelns eines nicht verriegelten Datenelements und des sofortigen Entriegelns des verriegelten Datenelements nach dem Zugriff auf das verriegelte Datenelement umfassen. Die Schritte des Verriegelns eines nicht verriegelten Datenelements können darüber hinaus die Schritte der Verwendung eines noch vorsichtiger arbeitenden (konservativen) Verriegelungsschemas, z. B. eines zweiphasigen Verriegelungsschemas, umfassen. Wenigstens eine der gleichzeitig ablaufenden Transaktionen ist eine Gruppe aus kooperativen Transaktionen.

Claims (13)

1. Verfahren zur Steuerung des zeitlichen Ablaufs von wenigstens zwei gleichzeitig ablaufenden Transaktionen, die auf gemeinsam genutzte Daten zugreifen, bei dem
eine Verlaufsdatei gebildet wird, die den gemeinsam genutzten Daten zugeordnet ist und alle Zugriffstransaktionen der Reihe nach auflistet;
aus der Verlaufsdatei ein Serialisierungsgraph gebildet wird, der die Abhängigkeiten zwischen den Transaktionen aufzeigt;
ein Kreis in dem Serialisierungsgraph gesucht wird; und
als Reaktion auf den Suchschritt ein durch die Transaktionen gebildeter Kreis erkannt wird;
dadurch gekennzeichnet, daß alle Transaktionen in dem Kreis und alle von diesen abhängigen Transaktionen abgebrochen werden.
2. Verfahren nach Anspruch 1, bei dem bei dem Schritt des Bildens einer Verlaufsdatei die Art des Datenzugriffs aufgezeichnet wird.
3. Verfahren nach Anspruch 2, bei dem bei dem Schritt des Aufzeichnens der Art des Datenzugriffs ein durch die Transaktionen ausgeführter Lese- oder Schreibvorgang aufgezeichnet wird.
4. Verfahren nach Anspruch 1, bei dem die gemeinsam genutzten Daten aus mehreren Datenelementen bestehen und bei dem Schritt des Bildens der Verlaufsdatei eine Verlaufsdatei für jedes der mehreren Datenelemente gebildet wird.
5. Verfahren nach Anspruch 1, bei dem bei dem Bilden des Serialisierungsgraphen
ein Knoten für jede der Transaktionen erzeugt wird;
eine gerichtete Kante von einem ersten Knoten zu einem zweiten Knoten erzeugt wird, um die Abhängigkeit der durch den ersten Knoten repräsentierten Transaktion von der durch den zweiten Knoten repräsentierten Transaktion aufzuzeigen; und
die beiden oben dargestellten Schritte für jede Transaktion wiederholt werden.
6. Verfahren nach Anspruch 5, bei dem bei dem Schritt des Erzeugens der Knoten ein Knoten nur für aktive Transaktionen erzeugt wird.
7. Verfahren nach Anspruch 1, bei dem bei dem Schritt des Suchens eines Kreises ein einfacher Weg gesucht wird, der von einem Knoten ausgeht und bei demselben Knoten endet.
8. Verfahren nach Anspruch 1, bei dem darüber hinaus die abgebrochenen Transaktionen erneut gestartet werden.
9. Verfahren nach Anspruch 8, bei dem bei dem Schritt des erneuten Startens ein noch vorsichtiger arbeitendes Verriegelungsverfahren verwendet wird.
10. Verfahren nach Anspruch 9, bei dem das Verwenden eines noch vorsichtiger arbeitenden Verriegelungsverfahrens das Verwenden eines zweiphasigen Verriegelungsverfahrens umfaßt.
11. Verfahren nach Anspruch 1, das darüber hinaus das Verriegeln eines unverriegelten Datenelements; und das sofortige Entriegeln des verriegelten Datenelements nach dem Zugreifen auf das verriegelte Datenelement umfaßt.
12. Verfahren nach Anspruch 11, bei dem darüber hinaus ein noch vorsichtiger arbeitendes Verriegelungsverfahren verwendet wird.
13. Verfahren nach Anspruch 12, bei dem ein zweiphasiges Verriegelungsverfahren verwendet wird.
DE69131545T 1990-05-17 1991-05-07 Verfahren für den Zugriff auf gemeinsame Daten Expired - Fee Related DE69131545T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US07/524,775 US5280619A (en) 1990-05-17 1990-05-17 System for accessing shared data using a serialization graph constructed from a history file showing completed locking dependencies between transactions

Publications (2)

Publication Number Publication Date
DE69131545D1 DE69131545D1 (de) 1999-09-30
DE69131545T2 true DE69131545T2 (de) 2000-01-13

Family

ID=24090618

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69131545T Expired - Fee Related DE69131545T2 (de) 1990-05-17 1991-05-07 Verfahren für den Zugriff auf gemeinsame Daten

Country Status (3)

Country Link
US (1) US5280619A (de)
EP (1) EP0457473B1 (de)
DE (1) DE69131545T2 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19600539C2 (de) * 1995-09-06 2003-10-16 Mitsubishi Electric Corp Taktgebervorrichtung

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04308961A (ja) * 1991-01-18 1992-10-30 Ncr Corp 占有されたプロセスの同期ロックの状態を通知するための手段及び装置
EP0595453B1 (de) * 1992-10-24 1998-11-11 International Computers Limited Verteiltes Datenverarbeitungssystem
DE69331705T2 (de) * 1992-12-21 2002-12-19 Apple Computer, Inc. Verfahren und gerät zur umwandlung einer beliebigen topologie von einer knotensammlung in einen acyclischen gerichteten graph
US5752026A (en) * 1994-04-28 1998-05-12 The United States Of America As Represented By The Secretary Of The Navy Early commit locking computer database protocol
US5497487A (en) * 1994-04-28 1996-03-05 The United States Of America As Represented By The Secretary Of The Navy Merge, commit recovery protocol for real-time database management systems
US7702540B1 (en) * 1995-04-26 2010-04-20 Ebay Inc. Computer-implement method and system for conducting auctions on the internet
US7937312B1 (en) 1995-04-26 2011-05-03 Ebay Inc. Facilitating electronic commerce transactions through binding offers
US7647243B2 (en) * 1995-11-07 2010-01-12 Ebay Inc. Electronic marketplace system and method for creation of a two-tiered pricing scheme
US5966715A (en) * 1995-12-29 1999-10-12 Csg Systems, Inc. Application and database security and integrity system and method
DE69632835T2 (de) * 1996-04-29 2005-07-14 Scientific Research Institute Of Different Branches "Integral" Verfahren zur automatischen verarbeitung von information über benutzerdaten
US5781910A (en) * 1996-09-13 1998-07-14 Stratus Computer, Inc. Preforming concurrent transactions in a replicated database environment
US5864851A (en) * 1997-04-14 1999-01-26 Lucent Technologies Inc. Method and system for managing replicated data with enhanced consistency and concurrency
US6990458B2 (en) * 1997-08-28 2006-01-24 Csg Systems, Inc. System and method for computer-aided technician dispatch and communication
US6078982A (en) * 1998-03-24 2000-06-20 Hewlett-Packard Company Pre-locking scheme for allowing consistent and concurrent workflow process execution in a workflow management system
US6901481B2 (en) 2000-04-14 2005-05-31 Stratus Technologies Bermuda Ltd. Method and apparatus for storing transactional information in persistent memory
US6802022B1 (en) 2000-04-14 2004-10-05 Stratus Technologies Bermuda Ltd. Maintenance of consistent, redundant mass storage images
US6862689B2 (en) 2001-04-12 2005-03-01 Stratus Technologies Bermuda Ltd. Method and apparatus for managing session information
CA2322604C (en) * 2000-10-06 2005-06-28 Ibm Canada Limited - Ibm Canada Limitee Deadlock management in database systems with demultiplexed connections
US6948010B2 (en) * 2000-12-20 2005-09-20 Stratus Technologies Bermuda Ltd. Method and apparatus for efficiently moving portions of a memory block
US6886171B2 (en) * 2001-02-20 2005-04-26 Stratus Technologies Bermuda Ltd. Caching for I/O virtual address translation and validation using device drivers
US6766413B2 (en) 2001-03-01 2004-07-20 Stratus Technologies Bermuda Ltd. Systems and methods for caching with file-level granularity
US6874102B2 (en) * 2001-03-05 2005-03-29 Stratus Technologies Bermuda Ltd. Coordinated recalibration of high bandwidth memories in a multiprocessor computer
US6996750B2 (en) * 2001-05-31 2006-02-07 Stratus Technologies Bermuda Ltd. Methods and apparatus for computer bus error termination
US7089253B2 (en) * 2002-09-13 2006-08-08 Netezza Corporation Computer method and system for concurrency control using dynamic serialization ordering
US7716305B2 (en) * 2004-09-01 2010-05-11 International Business Machines Corporation Apparatus, system, and method for preserving cluster level serialization during file server serialization reinitialization
US7877350B2 (en) * 2005-06-27 2011-01-25 Ab Initio Technology Llc Managing metadata for graph-based computations
AU2007286155B2 (en) * 2006-08-10 2013-12-12 Ab Initio Technology Llc. Distributing services in graph-based computations
KR101635945B1 (ko) * 2007-07-26 2016-07-04 아브 이니티오 테크놀로지 엘엘시 에러 핸들링이 가능한 그래프 기반의 트랜잭션 연산 처리 방법 및 시스템
JP4261609B1 (ja) * 2008-05-02 2009-04-30 透 降矢 トランザクションの同時実行制御を備えたマルチオペレーション・プロセッシングを用いたデータベースのトランザクション処理システム
CN105843684B (zh) 2009-02-13 2020-03-03 起元技术有限责任公司 管理任务执行
CN101937365B (zh) * 2009-06-30 2013-05-15 国际商业机器公司 并行程序的死锁检测方法和系统
US8667329B2 (en) * 2009-09-25 2014-03-04 Ab Initio Technology Llc Processing transactions in graph-based applications
CN107066241B (zh) 2010-06-15 2021-03-09 起元技术有限责任公司 用于动态加载基于图的计算的系统和方法
US9542536B2 (en) 2012-01-13 2017-01-10 Microsoft Technology Licensing, Llc Sustained data protection
US10108521B2 (en) 2012-11-16 2018-10-23 Ab Initio Technology Llc Dynamic component performance monitoring
US9507682B2 (en) 2012-11-16 2016-11-29 Ab Initio Technology Llc Dynamic graph performance monitoring
US9274926B2 (en) 2013-01-03 2016-03-01 Ab Initio Technology Llc Configurable testing of computer programs
US10180821B2 (en) 2013-12-05 2019-01-15 Ab Initio Technology Llc Managing interfaces for sub-graphs
US10657134B2 (en) 2015-08-05 2020-05-19 Ab Initio Technology Llc Selecting queries for execution on a stream of real-time data
US9390154B1 (en) * 2015-08-28 2016-07-12 Swirlds, Inc. Methods and apparatus for a distributed database within a network
US10671669B2 (en) 2015-12-21 2020-06-02 Ab Initio Technology Llc Sub-graph interface generation
CN110147268B (zh) * 2019-04-16 2020-05-08 清华大学无锡应用技术研究院 处理并发事务的方法、装置、并发控制系统及存储介质
WO2021087499A1 (en) * 2019-10-30 2021-05-06 Futurewei Technologies, Inc. Distributed serializable concurrency control scheme

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3683418A (en) * 1970-04-16 1972-08-08 Bell Telephone Labor Inc Method of protecting data in a multiprocessor computer system
US3827029A (en) * 1972-09-25 1974-07-30 Westinghouse Electric Corp Memory and program protection system for a digital computer system
US4224664A (en) * 1976-05-07 1980-09-23 Honeywell Information Systems Inc. Apparatus for detecting when the activity of one process in relation to a common piece of information interferes with any other process in a multiprogramming/multiprocessing computer system
US4189771A (en) * 1977-10-11 1980-02-19 International Business Machines Corporation Method and means for the detection of deadlock among waiting tasks in a multiprocessing, multiprogramming CPU environment
US4809168A (en) * 1986-10-17 1989-02-28 International Business Machines Corporation Passive serialization in a multitasking environment
US5095421A (en) * 1989-08-17 1992-03-10 International Business Machines Corporation Transaction processing facility within an operating system environment
US5161227A (en) * 1989-11-13 1992-11-03 International Business Machines Corporation Multilevel locking system and method
US5208914A (en) * 1989-12-29 1993-05-04 Superconductor Systems Limited Partnership Method and apparatus for non-sequential resource access
IL93239A (en) * 1990-02-01 1993-03-15 Technion Res & Dev Foundation High flow-rate synchronizer/schedular apparatus for multiprocessors

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19600539C2 (de) * 1995-09-06 2003-10-16 Mitsubishi Electric Corp Taktgebervorrichtung

Also Published As

Publication number Publication date
EP0457473A2 (de) 1991-11-21
EP0457473A3 (en) 1993-09-08
EP0457473B1 (de) 1999-08-25
US5280619A (en) 1994-01-18
DE69131545D1 (de) 1999-09-30

Similar Documents

Publication Publication Date Title
DE69131545T2 (de) Verfahren für den Zugriff auf gemeinsame Daten
DE3854667T2 (de) Datenbasissystem mit einer Baumstruktur.
DE69802437T2 (de) Feinkörniger übereinstimmungsmechanismus für optimistische parallelsteuerung mit verriegelungsgruppen
DE69222169T2 (de) Verfahren und vorrichtung zur datenerholung in mehrstufigen datenbanksystemen
DE4216871C2 (de) Ausführungsordnen zum Sicherstellen der Serialisierbarkeit verteilter Transaktionen
DE69615230T2 (de) Relationales Datenbanksystem und Verfahren mit grosser Verfügbarkeit der Daten bei der Umstrukturierung von Tabellendaten
DE3856055T2 (de) Verfahren und Einrichtung, um gleichzeitigen Zugriff zu indizierten sequentiellen Dateien zu ermöglichen
DE68916486T2 (de) Verfahren zur Durchführung von Operationen in einem relationalen Datenbankverwaltungssystem.
DE69032337T2 (de) Multiprozessorsystem verwendendes Datenbasisverarbeitungssystem
DE69129678T2 (de) Verfahren und System für eine konsequente Zeitfestlegung in verteilten Rechnerdatenbanken
DE3688529T2 (de) Verfahren zur Auffrischung von Mehrspaltentabellen in einer relationellen Datenbank mit Mindestinformation.
DE69112694T2 (de) Verfahren zum Betrieb eines Datenverarbeitungssystems zur Ausführung von Datenbanktransaktionen.
DE112005002402B4 (de) Hybride Hardware-/Software-Implementierung eines Transaktionsspeicherzugriffs
DE3786956T2 (de) Verwaltung von registrierungsdaten in einem transaktionsorientierten System.
DE69128367T2 (de) System und Verfahren zur Transaktionsbearbeitung mit verminderter Verriegelung
DE69326186T2 (de) Verfahren und Vorrichtung um eine verteilte Transaktion in einer verteilten Datenbank auszuführen
DE4420451C2 (de) Sperrmechanismus für ein CHECK-IN/CHECK-OUT-Modell
DE68929132T2 (de) Datenbankverwaltungssystem und Verfahren hierfür
DE69322549T2 (de) Verteilte Transaktionsverarbeitung mit einem Zwei-Phasen-Bindungsprotokoll mit erwarteter Bindung ohne Aufzeichnungspflicht
DE3855213T2 (de) Datenbanksystem und Verfahren für den gleichzeitigen Satzzugriff mit Hilfe eines Baumstrukturindexes
DE69528338T2 (de) Verfahren zur Verwaltung von schwachkonsistenten replizierten Datenbanken
DE69126067T2 (de) Verfahren und Gerät zur Verwaltung von Zustandsidentifizierern zur effizienten Wiederherstellung
DE69505629T2 (de) Verfahren zur Verwaltung von Rückwärts- und Vorwärtslogbüchern eines Transaktionsobjekts
DE3611223A1 (de) Verfahren und vorrichtung zum verhindern einer blockierung in einem datenbank-verwaltungssystem
DE3886756T2 (de) Betriebsmittelzugriff für Multiprozessorrechnersystem.

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee