DE69131545T2 - Verfahren für den Zugriff auf gemeinsame Daten - Google Patents
Verfahren für den Zugriff auf gemeinsame DatenInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims description 26
- 230000001419 dependent effect Effects 0.000 claims description 6
- 238000001514 detection method Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 125000002015 acyclic group Chemical group 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 206010000210 abortion Diseases 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000000151 deposition Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2308—Concurrency control
- G06F16/2336—Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
- G06F16/2343—Locking methods, e.g. distributed locking or locking implementation details
-
- Y—GENERAL 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
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99938—Concurrency, 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
- 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.
- 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.
- 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.
- 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.
- 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.
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)
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)
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)
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 |
-
1990
- 1990-05-17 US US07/524,775 patent/US5280619A/en not_active Expired - Lifetime
-
1991
- 1991-05-07 DE DE69131545T patent/DE69131545T2/de not_active Expired - Fee Related
- 1991-05-07 EP EP91304090A patent/EP0457473B1/de not_active Expired - Lifetime
Cited By (1)
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 |