An open and safe nested transaction model: Mӝt mӣ và an toàn mô hình giao dӏch lӗng Mô hình giao dӏch
h giao dӏch mӣ và an toàn lӗng nhau:
concurrency and recovery nhau: đӗng thӡi và phөc hӗi tương tranh và phөc hӗi Abstract Tóm tҳt Tóm tҳt In this paper, we present an open and safe Trong bài báo này, chúng tôi trình bày mӝt Trong bài báo này, chúng nӝi trình bày mӝt nested transaction model. We discuss the mô hình giao dӏch mӣ và an toàn lӗng nhau. mô hình giao dӏch mӣ và an toàn kép. Chúng concurrency control and recovery algorithms Chúng tôi thҧo luұn vӅ điӅu khiӇn tương tôi trình bày vӅ điӅu khiӇn tương tranh và các for our model. Our nested transaction model tranh và các thuұt toán phөc hӗi cho các mô thuұt toán phөc hӗi cho mô hình này. Trong uses the notion of a recovery point hình cӫa chúng tôi. mô hình giao dӏch lӗng mô hình giao dӏch lӗng nhau sӱ dөng khái subtransaction in the nested transaction tree. nhau chúng tôi sӱ dөng khái niӋm vӅ mӝt niӋm giao điӇm giao dӏch phө phөc hӗi trong It incorporates a prewrite operation before subtransaction điӇm khôi phөc trong cây giao cây giao dӏch lӗng nhau. Nó kӃt hӧp mӝt xӱ each write operation to increase the potential dӏch lӗng nhau. Nó kӃt hӧp mӝt prewrite hoҥt lý prewrite trưӟc mӛi xӱ lý write đӇ tăng concurrency. Our transaction model is termed đӝng trưӟc khi tӯng viӃt hoҥt đӝng đӇ tăng cưӡng tương tranh tiӅm năng. Mô hình giao ``open and safe'' as prewrites allow early tương tranh tiӅm năng. mô hình giao dӏch cӫa dӏch cӫa chúng tôi gӑi là ³mӣ và an toàn´ reads (before writes are performed on disk) chúng tôi đưӧc gӑi là "mӣ và an toàn''như như là ghi trưӟc cho phép đӑc (trưӟc khi without cascading aborts. The systems restart prewrites cho phép đҫu đӑc (trưӟc khi viӃt hành đӝng writes đưӧc thӵc hiӋn trên đĩa) mà and buffer management operations are also đưӧc thӵc hiӋn trên đĩa) mà không cҫn hӫy không cҫn tҫng hӫy bӓ. HӋ thӕng khӣi đӝng modeled as nested transactions to exploit bӓ tҫng. Các hӋ thӕng khӣi đӝng lҥi và hoҥt và hoҥt đӝng quҧn lý bӝ đӋm cũng cũng đưӧc possible concurrency during restart. The đӝng quҧn lý bӝ đӋm cũng đưӧc mô hình hóa mô hình hóa như các giao dӏch lӗng nhau đӇ concurrency control algorithm proposed for như các giao dӏch lӗng nhau đӇ khai thác khai thác đӗng thӡi trong suӕt quá trình khӣi database operations is also used to control đӗng thӡi có thӇ trong quá trình khӣi đӝng đӝng lҥi. Thuұt toán điӅu khiӇn tương tranh concurrent recovery operations. We have lҥi. ViӋc tranh KiӇm soát thuұt toán đӅ xuҩt đӅ xuҩt cho xӱ lý cơ sӣ dũ liӋu cũng đưӧc xӱ given a snapshot of complete transaction cho các hoҥt đӝng cơ sӣ dӳ liӋu cũng đưӧc sӱ dөng đӇ kiӇm soát các hoҥt đӝng phөc hӗi processing, data structures involved and, dөng đӇ kiӇm soát các hoҥt đӝng phөc hӗi đӗng thӡi. Chúng tôi cung cҩp mӝt bҧn chөt building the restart state in case of crash đӗng thӡi. Chúng tôi đã cung cҩp mӝt bҧn xӱ lý giao dӏch hoàn tҩt, cҩu trúc dӳ liӋu liên recovery. Ó 2000 Elsevier Science Inc. All chөp xӱ lý giao dӏch hoàn tҩt, cҩu trúc dӳ quan và xây dӵng lҥi vùng trong trưӡng hӧp rights reserved. liӋu liên quan và, xây dӵng khӣi đӝng lҥi nhà sөp đә. nưӟc trong trưӡng hӧp phөc hӗi sөp đә. Ó 2000 Elsevier Science Inc. Introduction 1, Giӟi thiӋu 1. Giӟi thiӋu 1.1. Overview of nested transaction models 1.1. Tәng quan các mô hình giao dӏch lӗng 1.1. Tәng quan mô hình giao dӏch lӗng nhau and recovery algorithms nhau và các thuұt toán phөc hӗi và thuұt toán phөc hӗi 1.1.1 Close nested transaction model 1.1.1 Đóng mô hình giao dӏch lӗng nhau 1.1.1 mô hình giao dӏch lông nhau đóng In close nested transaction model (Moss, Trong mô hình giao dӏch lӗng nhau gҫn Trong mô hình giao dӏch lӗng nhau đóng 1985), a subtransaction may contain (Moss, 1985), mӝt subtransaction có thӇ chӭa (Moss,1985), mӝt giao dӏch phө có thӇ chӭa operations to be performed concurrently, or các hoҥt đӝng đưӧc thӵc hiӋn đӗng thӡi, hoһc Các hoҥt đӝng đưӧc thӵc hiӋn đӗng thӡi, operations that may be aborted independent hoҥt đӝng có thӇ sӁ đưӧc hӫy bӓ đӝc lұp cӫa hoһc hoҥt đӝng có thӇ sӁ bӏ hӫy bӓ phө thuӝc of their invoking transaction. Such operations các giao dӏch cách gӑi cӫa hӑ. hoҥt đӝng này vào giao dӏch cӫa cӫa. Hoҥt đӝng này đưӧc are considered as subtransactions of the đưӧc coi là subtransactions cӫa giao dӏch ban coi là giao dӏch phө cӫa giao dӏch ban đҫu. original transaction. This parent±child đҫu. ĐiӅu này mӕi quan hӋ mҽ con ± de ® ĐiӅu này có mӕi quan hӋ relationship de®nes a nested transaction tree nes mӝt cây giao dӏch lӗng nhau và các giao and transactions are termed as nested dӏch đưӧc gӑi là giao dӏch lӗng nhau (Moss, transactions (Moss, 1985). Failure of 1985). Thҩt bҥi cӫa subtransactions có thӇ subtransactions may result in the invocationdүn đӃn viӋc gӑi cӫa subtransactions thay thӃ of alternate subtransactions that could replace có thӇ thay thӃ nhӳng cái không thӇ thӵc hiӋn the failed ones to accomplish the successfulđưӧc hoàn tҩt thành công cӫa toàn bӝ giao completion of the whole transaction. Each dӏch. Mӛi giao dӏch đӇ có đưӧc các khóa transaction has to acquire the respective lock tương ӭng trưӟc khi truy cұp vào mӝt đӕi before accessing a data object. A tưӧng dӳ liӋu. vv ¼ e cӫa A subtransaction subtransaction's e¼ect cannot be seen outside không thӇ nhìn thҩy bên ngoài cӫa phө huynh its parent's view (hence, called closed). A xem nó (vì thӃ, đưӧc gӑi là đóng cӱa). Mӝt child transaction has access to the data locked giao dӏch trҿ đã truy cұp vào các dӳ liӋu bӏ by its parent. When a transaction writes a khóa bӣi cha cӫa nó. Khi giao dӏch viӃt mӝt data object, a new version of the object is đӕi tưӧng dӳ liӋu, mӝt phiên bҧn mӟi cӫa đӕi created. This version of the object is stored in tưӧng đưӧc tҥo ra. Đây là phiên bҧn cӫa đӕi volatile memory. When the subtransaction tưӧng đưӧc lưu trӳ trong bӝ nhӟ әn đӏnh. Khi commits, the updated versions of the object subtransaction các cam kӃt, các phiên bҧn are passed to its parent. If the transactioncұp nhұt cӫa đӕi tưӧng đưӧc chuyӇn đӃn cha aborts, the new version of the object is cӫa nó. NӃu hӫy bӓ giao dӏch, phiên bҧn mӟi discarded. Parent commits only after all itscӫa đӕi tưӧng sӁ bӏ loҥi. Phө huynh cam kӃt children are terminated. When the top-level chӍ sau khi tҩt cҧ các trҿ em đưӧc chҩm dӭt. transaction commits, the current version of Khi cҩp trên cam kӃt giao dӏch, phiên bҧn each object is saved on stable storage. hiӋn hành cӫa mӛi đӕi tưӧng đưӧc lưu trӳ әn đӏnh. In the closed nested transaction model, the Trong mô hình giao dӏch đóng cӱa lӗng nhau, availability is restricted as the scope of each có bӏ hҥn chӃ là phҥm vi cӫa mӛi subtransaction is restricted to its parent only. subtransaction đưӧc giӟi hҥn chӍ có mҽ. ĐiӅu This forces a subtransaction to pass all its này buӝc mӝt subtransaction đӇ vưӧt qua tҩt locks and versions of data objects updated to cҧ các ә khóa và các phiên bҧn cӫa đӕi tưӧng its parent on commit. The e ect of a dӳ liӋu cұp nhұt đӇ cha mҽ cӫa nó trên cam committed subtransaction is made permanent kӃt. Các ¼ e vv cӫa mӝt subtransaction cam only when the toplevel transaction commits. kӃt đưӧc thӵc hiӋn thưӡng xuyên khi các giao In many applications, it is unacceptable that dӏch cҩp đҫu cam kӃt. Trong nhiӅu ӭng dөng, the work of a longlived transaction is nó là không thӇ chҩp nhұn rҵng công viӋc cӫa completely undone by using either of the mӝt giao dӏch longlived là hoàn toàn hoàn tác above techniques in case the transaction bҵng cách sӱ dөng mӝt trong các kӻ thuұt nói eventually fails at ®nishing stage. The trên trong trưӡng hӧp giao dӏch cuӕi cùng current strategy forces short-lived thҩt bҥi ӣ giai đoҥn nishing ®. ChiӃn lưӧc transactions to wait before they acquire locks hiӋn nay lӵc lưӧng các giao dӏch ngҳn ngӫi until the top-level transactions commit and đӇ chӡ đӧi trưӟc khi hӑ có đưӧc ә khóa cho release their locks. Therefore, the model is đӃn khi cҩp trên giao dӏch cam kӃt và giҧi not appropriate for the system that consists of phóng ә khóa cӫa hӑ. Vì vұy, mô hình không long and short transactions. thích hӧp cho các hӋ thӕng bao gӗm các giao dӏch lâu dài và ngҳn. 1.1.2. Open nested transaction model 1.1.2. Mӣ mô hình giao dӏch lӗng nhau To exploit layer speci®c semantics at each level of ĐӇ khai thác speci lӟp ngӳ nghĩa c ® tҥi mӛi operation nesting, Weikum presented a multilevel cҩp đӝ cӫa hoҥt đӝng làm tә, Weikum trình transaction model (Weikum, 1991; Weikum bày mӝt mô hình giao dӏch đa (Weikum, năm et al., 1990). The model provides non-strict 1991; Weikum và cӝng sӵ năm 1990.,) Ngӳ execution by taking into account the nghĩa này. Mô hình không đúng quy đӏnh commutative properties of the semantics of thӵc hiӋn bӣi có tính giao hoán các thuӝc tính operations at each level of data bstraction, cӫa hoҥt đӝng ӣ mӛi cҩp dӳ liӋu trӯu tưӧng, which achieves a higher degree of mà đҥt đưӧc mӝt mӭc đӝ cao hơn cӫa tương oncurrency. A subtransaction is allowed to tranh. subtransaction A đưӧc phép phát hành release locks before the commit of higher khóa trưӟc khi cam kӃt giao dӏch cҩp cao level transactions. The leaf level locks are hơn. Các khóa cҩp lá đưӧc phát hành sӟm released early only if the semantics of the nӃu ngӳ nghĩa cӫa các hoҥt đӝng đưӧc biӃt operations are known and the corresponding đӃn và nhӳng hành đӝng đӅn bù tương ӭng compensatory actions de®ned. When a high de ® ned. Khi mӝt giao dӏch sӁ ngӯng cҩp level transaction aborts, its e¼ect is undone cao, vv cӫa nó ¼ e là hoàn tác bҵng cách thӵc by executing an inverse action which hiӋn mӝt hành đӝng nghӏch đҧo mà đӅn bù compensates the completed transaction. giao dӏch hoàn tҩt. Phөc hӗi tӯ hӋ thӕng treo Recovery from system crashes is provided by đưӧc cung cҩp bҵng cách thӵc hiӋn hoàn tác executing undo actions at the upper levels hành đӝng ӣ cҩp trên và làm lҥi các hành and redo actions at the leaf level. Each level đӝng ӣ cҩp lá. Mӛi cҩp đӝ đưӧc cung cҩp vӟi is provided with a level speci®c recovery mӝt speci ® c cҩp cơ chӃ phөc hӗi al này. mô mechanism. This model has also been studied hình cũng đã đưӧc nghiên cӭu trong khuôn in the framework of object oriented databases khә theo đӏnh hưӟng đӕi tưӧng cơ sӣ dӳ liӋu in Muth et al. (1993) and Resende et al. trong Muth và cӝng sӵ. (1993) và Resende et (1994). al. (1994). In many applications, the semantics of transactions Trong nhiӅu ӭng dөng, ngӳ nghĩa cӫa các may not be known and hence, it is di cult to provide giao dӏch có thӇ không đưӧc biӃt đӃn và do non-strict executions. In real time situations, there are đó, nó là di bái đӇ cung cҩp cho phi hành other classes of operations that cannot be nghiêm ngһt. Trong trưӡng hӧp thӡi gian compensated. These are the operations that thӵc, có các lӟp hӑc khác cӫa các hoҥt đӝng have an irreversible external e¼ect, such as mà không thӇ đưӧc bӗi thưӡng. Đây là nhӳng handing over huge amounts of money at an hoҥt đӝng mà có mӝt bên ngoài e không thӇ automatic teller machine. Such operations đҧo ngưӧc ¼ vv, chҷng hҥn như bàn giao sӕ have to be deferred until top-level commits, tiӅn rҩt lӟn cӫa tiӅn tҥi máy rút tiӅn tӵ đӝng. which restricts availability (i.e., increases hoҥt đӝng như vұy đã đưӧc hoãn lҥi cho đӃn response time). khi cҩp trên cam kӃt, trong đó hҥn chӃ sҹn có (nghĩa là, tăng thӡi gian đáp ӭng). 1.1.3. Nested transaction recovery algorithms µ µ
The intentions-list and undo-logging Danh sách nhӳng ý đӏnh và quay lҥi khai thác recovery gorithms given in Fekete et al. gӛ các thuұt toán phөc hӗi đưӧc đưa ra trong (1993) handle ecovery from transaction et al Fekete. (1993) xӱ lý thu hӗi tӯ sӁ ngӯng aborts in the nested ransaction environment giao dӏch trong môi trưӡng giao dӏch lӗng by exploiting the ommutative properties of nhau bҵng cách khai thác các tính chҩt giao the operations. The intentions-list algorithm hoán cӫa các hoҥt đӝng. Các danh sách thuұt works by maintaining a list of operations for toán có ý đӏnh hoҥt đӝng bҵng cách duy trì each ansaction. When a transaction commits, mӝt danh sách các hoҥt đӝng cho mӛi giao its list is appended to its parent; when it dӏch. Khi giao dӏch mӝt cam kӃt, danh sách aborts, the intentions-list is discarded. When cӫa nó đưӧc nӕi vӟi mҽ cӫa nó, khi nó sӁ the top level transaction commits, its ngӯng, nhӳng ý đӏnh danh sách bӏ loҥi. Khi intentions-list is transferred to the log. This các giao dӏch cam kӃt ӣ cҩp cao nhҩt, danh scheme provides recovery from transaction sách cӫa nó-nhӳng ý đӏnh đưӧc chuyӇn giao aborts only and does not handle ystem cho đăng nhұp. Chương trình này cung cҩp sӁ crashes. To increase concurrency during ngӯng giao dӏch phөc hӗi tӯ chӍ và không xӱ undo logging recovery, scheme allows some lý sӵ cӕ hӋ thӕng. ĐӇ tăng đӗng thӡi trong non-strict executions. It allows a ransaction quá trình phөc hӗi hoàn tác đăng nhұp, to share the uncommitted updates made by chương trình cho phép mӝt sӕ vө hành quyӃt other transactions by exploiting không nghiêm ngһt. Nó cho phép mӝt giao commutativity of operations. On execution of dӏch đӇ chia sҿ các bҧn cұp nhұt không cam an operation, the data object records change kӃt đưӧc thӵc hiӋn bӣi các giao dӏch khác their states and the new state is transferred to bҵng cách khai thác commutativity hoҥt the log. When a transaction aborts, in đӝng. Trên thӵc hiӋn mӝt hoҥt đӝng, các đӕi contrast to intentions-list lgorithm, all tưӧng dӳ liӋu hӗ sơ thay đәi trҥng thái cӫa hӑ operations executed by its descendants on the và nhà nưӟc mӟi đưӧc chuyӇn giao cho đăng object are undone from its current state and nhұp. Khi hӫy bӓ giao dӏch, trái ngưӧc vӟi ý are also subsequently removed from the log. đӏnh, danh sách thuұt toán, tҩt cҧ các hoҥt This lgorithm does not take care of recovery đӝng thӵc hiӋn bӣi các con cháu cӫa mình from system crashes. vào đӕi tưӧng đưӧc hoàn tác tӯ trҥng thái hiӋn tҥi cӫa mình và cũng sau đó lҩy ra tӯ nhұt ký. Thuұt toán này không chăm sóc phөc hӗi tӯ hӋ thӕng treo. In both intentions-list and undo-logging algorithms, Trong cҧ hai danh sách nhӳng ý đӏnh và quay an incomplete transaction is allowed to make lҥi khai thác gӛ các thuұt toán, giao dӏch chưa uncommitted updates available to those hoàn chӍnh đưӧc phép cұp nhұt không cam transactions that perform a commutative kӃt có sҹn cho nhӳng giao dӏch thӵc hiӋn mӝt operation. However, this is restricted to hoҥt đӝng giao hoán. Tuy nhiên, đây là hҥn transactions at the same level of abstraction. chӃ giao dӏch tҥi cùng mӝt mӭc đӝ trӯu This limits availability. In both algorithms, tưӧng. ĐiӅu này có giӟi hҥn. Trong cҧ hai all the work done by descendent transactions thuұt toán, tҩt cҧ các công viӋc thӵc hiӋn các are discarded in case of aborts at higher giao dӏch hұu duӋ đưӧc bӓ trong trưӡng hӧp levels. This may not be possible or desirable hӫy bӓ ӣ cҩp cao hơn. ĐiӅu này có thӇ không in many real time applications. In đưӧc có thӇ có hoһc mong muӕn trong thӡi undologging algorithm, when a transaction gian ӭng dөng thӵc tӃ rҩt nhiӅu. Trong thuұt aborts, in contrast to intentions-list algorithm, toán undologging, khi mӝt sӁ ngӯng giao all operations executed by its descendants on dӏch, trái ngưӧc vӟi ý đӏnh, danh sách các the object are undone from its current state thuұt toán, tҩt cҧ các hoҥt đӝng thӵc hiӋn bӣi and are subsequently removed from the log. các con cháu cӫa mình vào đӕi tưӧng đưӧc In both intentions-list and undo-logging hoàn tác tӯ trҥng thái hiӋn tҥi cӫa mình và algorithms, an incomplete transaction is sau đó lҩy ra tӯ nhұt ký. Trong cҧ hai danh allowed to make uncommitted updates sách nhӳng ý đӏnh và quay lҥi khai thác gӛ visible to those transactions that perform a các thuұt toán, giao dӏch chưa hoàn chӍnh commutative operation. This is restricted to đưӧc phép cұp nhұt không cam hiӇn thӏ cho the transactions at the same level of nhӳng giao dӏch thӵc hiӋn mӝt hoҥt đӝng abstraction. giao hoán. Đây là giӟi hҥn cho các giao dӏch tҥi cùng mӝt mӭc đӝ trӯu tưӧng. The above two recovery models consider semantics of Các mô hình trên thu hӗi hai xem xét ngӳ operations at leaf level only. System R (Gray et al., nghĩa cӫa các hoҥt đӝng ӣ mӭc lá chӍ. HӋ 1981) exploits layer speci®c semantics but thӕng R (Gray et al., 1981) khai thác lӟp ngӳ restricted to two level of transaction nesting. nghĩa speci ® c nhưng hҥn chӃ đӃn hai mӭc In System R, to perform recovery, updates đӝ giao dӏch làm tә. Trong hӋ thӕng R, đӇ are undone by performing inverse tuple-level thӵc hiӋn phөc hӗi, cұp nhұt đưӧc hoàn tác operations. For this purpose, System R bҵng cách thӵc hiӋn ngưӧc tuple cҩp hoҥt records tuple updates on a log. To recover đӝng. Vӟi mөc đích này, hӋ thӕng R cұp nhұt from a system crash, before applying any hӗ sơ vӅ đăng nhұp mӝt tuple. ĐӇ phөc hӗi tӯ tuple level log record, the database must ®rst sӵ cӕ hӋ thӕng trưӟc khi áp dөng bҩt cӭ hӗ sơ be restored to some tuple-level consistent cҩp đăng nhұp tuple, cơ sӣ dӳ liӋu rst phҧi ® state. In other words, a low-level đưӧc khôi phөc lҥi mӝt sӕ mӭc đӝ phù hӧp recovermechanism is necessary to make tuple nhà tuple. Nói cách khác, mӝt cҩp thҩp phөc actions appear atomic. hӗi cơ chӃ là cҫn thiӃt đӇ làm cho hành đӝng tuple xuҩt hiӋn nguyên tӱ. In Moss (1987), a crash recovery technique similar to Trong Moss (1987), mӝt khôi phөc treo bóng shadow page has been suggested in nested transaction kӻ thuұt tương tӵ như trang đã đưӧc đӅ xuҩt environment based on undo/redo log trong môi trưӡng giao dӏch lӗng nhau dӵa methods. In terms of logging, both undo/redo trên undo / redo phương pháp đăng nhұp. logs are used. Mohan et al. (1992, 1989) has Trong điӅu kiӋn cӫa khai thác gӛ, cҧ hai hoàn also discussed ``write ahead logging'' based tác / làm lҥi đưӧc sӱ dөng các bҧn ghi. crash recovery algorithm using conventional Mohan và các cӝng sӵ. (1992, 1989) cũng đã nested transaction model. This undo/redo thҧo luұn `` viӃt đăng nhұp trưӟc''phөc hӗi type of recovery model exploits semantics of dӵa trên thuұt toán tai nҥn bҵng cách sӱ dөng nested transactions. The actions of a mô hình lӗng nhau giao dӏch thông thưӡng. transaction undone during previous abort ĐiӅu này undo / redo loҥi phөc hӗi mô hình have not been undone again in case of one khai thác ngӳ nghĩa cӫa các giao dӏch lӗng more failure. This is an advantage over nhau. Nhӳng hành đӝng cӫa mӝt giao dӏch Weikum's multilevel recovery algorithm by mӣ trong khi hӫy bӓ trưӟc đó đã không đưӧc which requires undo actions to be undone hoàn tác mӝt lҫn nӳa trong trưӡng hӧp có again in case of one more failure. thêm mӝt thҩt bҥi. Đây là mӝt lӧi thӃ hơn nhiӅu mӭc phөc hӗi cӫa Weikum thuұt toán mà yêu cҫu hoàn tác hành đӝng đưӧc hoàn lҥi trong trưӡng hӧp có thêm mӝt thҩt bҥi. 1.2. Our contributions 1.2. đóng góp cӫa chúng tôi In this paper, we introduce an open and safe nested Trong bài báo này, chúng tôi giӟi thiӋu mӝt transaction model in the environment of mô hình an toàn giao dӏch lӗng nhau và mӣ normal read and write operations to remove trong môi trưӡng bình thưӡng đӑc và ghi các the de®ciencies stated above and to further hoҥt đӝng đӇ loҥi bӓ các de ® ciencies nêu improve availability and provide ecient crash trên và nâng cao hơn nӳa khҧ dөng và cung recovery. Our model supports interand cҩp cient khôi phөc treo điӋn tӱ. mô hình cӫa intratransaction concurrency. We assume that chúng tôi hӛ trӧ liên và giao dӏch trong nӝi semantics of transactions at various levels of bӝ đӗng thӡi. Chúng tôi giҧ đӏnh rҵng ngӳ nesting are not known. There are two basic nghĩa cӫa các giao dӏch ӣ mӭc đӝ khác nhau motivations behind our model. First, it is làm tә không biӃt. Có hai đӝng lӵc cơ bҧn desirable that long-lived transactions should cӫa mô hình cӫa chúng tôi. Trưӟc tiên, đó là be able to release their locks before top-level mong muӕn rҵng giao dӏch dài sӕng có thӇ transactions commit. Second, it may not be phát hành ә khóa cӫa mình trưӟc khi giao desirable or possible to undo or compensate dӏch cҩp cao cam kӃt. Thӭ hai, nó có thӇ the e¼ects of one or more of the important không đưӧc mong muӕn hoһc có thӇ lùi lҥi committed descendants after the failure of a hoһc bӗi thưӡng cho ECTS ¼ e cӫa mӝt hoһc higher level transaction due to abort or a nhiӅu con cháu cam kӃt quan trӑng sau khi sӵ system crash. We introduce the concept of a thҩt bҥi cӫa mӝt giao dӏch cҩp cao hơn do `recovery point subtransaction'' of a top-level hӫy bӓ hoһc sөp đә hӋ thӕng. Chúng tôi giӟi transaction in a nested transaction tree. It is thiӋu các khái niӋm vӅ mӝt''phөc hӗi essentially a ubtransaction after the commit `subtransaction điӇm cӫa mӝt giao dӏch cҩp of which its ancestors are not allowed to cao trong mӝt cây giao dӏch lӗng nhau. Đó là rollback. In other words, once the recovery bҧn chҩt là mӝt ubtransaction sau khi cam point subtransaction of a top-level transaction kӃt, trong đó tә tiên cӫa nó là không đưӧc has ommitted, all its superior transactions phép rollback. Nói cách khác, mӝt khi các are forced to commit. In case it aborts, its điӇm khôi phөc subtransaction cӫa mӝt giao ancestors can choose an alternate path to dӏch cҩp cao đã bӓ qua, tҩt cҧ các giao dӏch complete their execution. Our nested cҩp trên buӝc phҧi cam kӃt. Trong trưӡng transaction model uses a prewrite operation hӧp hӫy bӓ, tә tiên cӫa nó có thӇ chӑn mӝt before an actual write operation to increase con đưӡng thay thӃ đӇ hoàn thành thӵc hiӋn. the concurrency. The nested transaction tree mô hình giao dӏch lӗng nhau cӫa chúng tôi sӱ of our model consists of database operations, dөng mӝt prewrite hoҥt đӝng trưӟc mӝt thӵc system recovery operations (such as analysis tӃ hoҥt đӝng viӃt đӇ tăng tương tranh. Cây and redo operations) and bu¼er management giao dӏch lӗng nhau cӫa mô hình cӫa chúng operations speci®ed as nested ransactions. tôi bao gӗm các hoҥt đӝng cơ sӣ dӳ liӋu, các The read, prewrite and writes operations hoҥt đӝng phөc hӗi hӋ thӕng (như phân tích are modeled at leaf levels in the transaction hierarchy. và làm lҥi hoҥt đӝng) và bu ¼ er speci hoҥt The recovery operations are speci®ed in terms of đӝng quҧn lý ® ed như ransactions lӗng nested transactions to achieve higher concurrency during system restart. Our locking algorithm controls nhau. ViӋc đӑc, prewrite và ghi các hoҥt the execution of both the normal operations as well as đӝng đưӧc mô hình ӣ mӭc lá trong phân cҩp recovery operations. We also discuss the data giao dӏch. Các hoҥt đӝng phөc hӗi đưӧc speci tructures required for the implementation of ® ed vӅ giao dӏch lӗng nhau đӇ đҥt đưӧc the recovery algorithm. We have discussed a đӗng thӡi cao hơn khi hӋ thӕng khӣi đӝng lҥi. snapshot of the concurrency and recovery Thuұt toán khóa cӫa chúng tôi kiӇm soát viӋc algorithm with the help of an example. A thӵc hiӋn cӫa cҧ hai hoҥt đӝng bình thưӡng brief overview of our crash recovery cũng như các hoҥt đӝng phөc hӗi. Chúng tôi algorithm has appeared in Madria et al. cũng thҧo luұn vӅ các dӳ liӋu cҫn thiӃt cho (1997c). The correctness of the concurrency tructures viӋc thӵc hiӋn các thuұt toán khôi control algorithm using I/O automation phөc. Chúng tôi đã thҧo luұn vӅ mӝt bҧn model (FLMW) has reported in Madria et al. chөp cӫa thuұt toán tương tranh và phөc hӗi (1997b). vӟi sӵ trӧ giúp cӫa mӝt ví dө. Mӝt tәng quan vӅ các thuұt toán khôi phөc treo cӫa chúng tôi đã xuҩt hiӋn trong Madria et al. (1997c). Tính đúng đҳn cӫa các thuұt toán điӅu khiӇn tương tranh sӱ dөng I / O tӵ đӝng hóa mô hình (FLMW) đã báo cáo trong Madria et al. (1997b).