You are on page 1of 9

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).

You might also like