     IV 

      

         , ..     
   ( ,   ).   
,         . 
              , 
       . 
                
,      . 
             . 
             . 
     .. (    ). , 
         ,  
 , ,   .    
    13-16,    . 

    12      

     13 

     
    
    13.1.  

           .   
        , 
  .     
   .        
,          . 
         ,()    
    , ..     
 ,  -     
  .  ,     
,     .    
   . ,      
,  ,     .  , 
   ,    ,   
       , , 
  . 
        ,  ,    
        ,     
  - .   ,     
 ,          
  .       
  ,        ( 
,    [13.11]). 
      .      
    (    
  - ).    
   (     
 ,    ).   
    (  
   ,  -    
).       
     SQL.  ,    
  . 

    13.2.  

      ,     . 
     .  .  
,    ( )    
TOTQTY,        .  
TOTQTY          
QTY     .  . 13.1     
     1000   S5   PI (INSERT 
     SP, a UPDATE   TOTQTY 
  1). 

    354	 IV.   

       ,     , 
 .          
     (  , ,  
 INSERT, DELETE,       DPDATE).  ,  
        ,  
 TOTQTY   1     QTY   . 
 ,    (.. )    
    ,      
.  ,       
  ,         
 . 

    BEGIN TRANSACTION ; 
    INSERT ( { S#:'S5', P#:'P1', QTY:1000 } } INTO SP IF   THEN 
GO TO UNDO ; 
    UPDATE P WHERE P# = 'PI' TOTOJY := TOTQTY + 1000 ; IF   THEN 
GO TO UNDO ; 
    COMMIT TRANSACTION ; GO TO FINISH ; 
    UNDO : 
    ROLLBACK TRANSACTION ; 
    FINISH : 
    RETURN ; 

    . 13.1.   () 

      ,   ,      
,   ,        
.        .  
   ,    .   
 ,    . ,    
   ,       
   ..  ,   
,  ,       
   (  ),      
.  ,    ,  
  (     ). 
     ,   (  ), 
   (  ),   
     COMMIT TRANSACTION  ROLLBACK TRANSACTION. 
        COMMIT TRANSACTION (  COMMIT)   
  .    ,  
    ,     ( 
 )   ,   ,  
  ,    , ..  . 
       ROLLBACK TRANSACTION (  ROLLBACK)   
  .    ,  
 - ,        
    , .. . 
    , COMMIT ,     , 
       .  -  , 
   -  ,   ROLLBACK  
  . 
     ,          
(   ),       

     13. 	355 

      ,  . ,    "  
",    COMMIT,  "    , 
",    .    ooej  
  .       
    [13.11]. 
        .    ,    
  ,  ,    ()  ,   
    ,       
  .  ,     
        > 
    . 
    (      .    
^    :  ( )   ( 
). Hi        
           
.    *   ,   
   ,      ,  
 .) 
       .   ,  * 
     (..      
).      ,    
      ;  
            
  (,      
).  ,        
,      .  ,  
      ,     
 ,  , . 

    13.3.   

          BEGIN TRANSACTION 
(  BEGIN)       
COMMIT,  ROLLBACK.  COMMIT     
 (       
 (syncpoint)).      
  , , ,      ( 
 )   '.   ,  
 ROLLBACK      ,    
    BEGIN TRANSACTION, ..    . 
( "  "       
    ,    BEGIN   
     .)    
  . 
    1.  ,     ,   
  , , ..  .   
         (  
,      ,   ). 
,        
 (     ""). 
    1     " "     
  .       
        .  
,             
.         
 (       
 ). 

    356	 IV.   

    2.      ,     
.     ,    
      .  
    . 
    .    ,     
      (, ,  
  )     .  
    . 
     2,      , 
,   ,  ,  
   ROLLBACK,   COMMIT.   1 , 
,  . 
     ,  COMMIT  ROLLBACK  ,   
.  ,       
 ,    ,    . 13.2. 

    *   1   
    1 	| 
    | 
    	BEGIN                                       COMMIT 
    	TRANSACTION 
       2 (	)  
    BEGIN	' ROLLBACK 
    TRANSACTION 
       3   
    
    
     1 
    BEGIN                                           COMMIT         
    TRANSACTION	 

    . 13.2.       

            (. . 13.1). 
         ROLLBACK, 
   .         
      . ,  
  ROLLBACK    ,   - 
      ( . 13.1 
" "   RETURN,   
      ). 
      ,         , 
        .  
    ,    
   ,        . 
,         COMMIT,  
 ,         (   
           
    ).    ,  
          
,      .   , 
          
COMMIT.      -!5'~' 
    (..      
  ).  ,     
   ,       
    . ,   , 
    . 

     13. 	357 

      

       ,      
: , ,    ( 
  ). 
       .   (   ). 
       .     .  
,          
        
.         
  . 
       .     .  , ,  
        ,  
         ,  
  .  ,     
 1  2   : 1   
 2    2,  2    1 
   1.       
  . 
      .   ,   , 
       . 

    13.4.   

              
 ,        
,            
(  ).     
  ,      .  
      .     
  , ,      
.    ,      
    .     . 
         (,   ),   
    ,      
  .         
 . 
         (,    ), 
         -   
 ,   ,  ,      
.       . 
        . 
             
()  ( ,    ).  
  -       
,      ,  ,  
 ("" )   . 
     , ,  (  )  
        
  ,        . 
     :      ,  
 ,    ?  .   
  (      
)     .  
         
 

    358	 IV.   

             , 
        . 
 . 13.3        
  . 

     

     
    1 "1  1 
     
                      '                    1 	 1 
                                   '      4       5	1   - 1 
    
    
    1  
      (  tc) 
      (  tf) 

    . 13.3.    

        . 
            tf. 
          tf      
  tc. 
       1      tc. 
       2     tc     
  tc,     // 
              tc,     
  tf. 
        4     tc     
  tf. 
        ,  5      tc,   
    tf. 
    ,         5   
,    2  4   .    
,    1      , 
           tc (.. 
     ).  ,  
,   (   )   
 tf,        (, ). 
    ,        
     2-5.    
  . 
    1.     :   UNDO ()  REDO 
( ).   UNDO   ,  
    (..  ,    
 tc),   REDO  . 
    2.       (),    
 . 
    3.        BEGIN TRANSACTION   
 ,        UNDO. 

     13.  359 

    4.        COMMIT   
 ,       REDO. 
    5.       ,  UNDO  REDO 
     2  4,    
REDO,      5,    UNDO. 
          ,  
   UNDO,     ,  
    REDO. 
    .         
     . , 
         
     . 
     ,     ,   
   . 

    13.5.   

    .        
   .       
 . 
      ,         
    ,     
  .      
 ( )      ( )  
       ,    
.  ,        
,    .     
 ,      ,   
      . 
     ,      / 
. -       
.       ,    
.        
       . 

    13.6.   

            . 
    ,     
     ,  
         
    (). ,  
,    MVS  IBM,    
 IMS,     DB2 ( ,    
).    ,    ,   
 IMS,     DB2,   .     
         . 
          COMMIT  IMS  ROLLBACK  
DB2, ,         ,  
        .   
    COMMIT ( ROLLBACK).  
   ,  .  
,     (.. IMS  DB2  ) 
   ,    

    360	 IV.   

    .  ,    ,   
    .     
 . 
        .   
,       ,  ,  
  COMMIT,   ROLLBACK.     
 COMMIT     . 
    1. -,         
   " ".    ,  
  , ..   ,   
    ( )   , 
       (.. 
  ). ,    ,  
        ,   
       .  
   ,    
,   "" , ,  "Not OK". 
    2.         , 
        , 
    .     "",  
  "",     "Not OK",   " ". 
         
,         
  . ,      , 
       2,      . 
  ,        
        1   2. 
    ,      -     
,         
 .    ,   ,  
 .      , ,  
   , ,   . 
    .  ,       
     (     
 ),         
,         .  
    ,  ,   
    ,        
 ( ,    ,    
     ). 
    ,     (.  2),   
  ,      
  .  ,       
 ,    ,    
      .   
  ,      ,  
  [13.11]. 

    13.7.   SQL 

    SQL    COMMIT  ROLLBACK;  ,   
,   CLOSE ().      
  . 
    .    SQL      
    CLOSE (  COMMIT,   
 ROLLBACK).        . 

     13. 	361 

       SQL      > 
   ,  SQL      BEGIN 
TRANSACTK      ,    
   . (     
 ,   BEGIN TRANSACTION     
 .)        
, ;  ,      
,     ,    
.    SET TRANSACTION    
  * ,    .   
    :     . 
  : 
    SET TRANSACTION   ; 
    (        ). 
            READ CNLY,  READ WRITE.   
 ,         READ   WRITE;           
   REAE 
    UNCOMMITTED,   READ  ONLY.   READ  WRITE, 
     READ UNCOMMITTED. 
           ISOLATION LEVEL ,  
  
     READ UNCOMMITTED, READ COMMITTED, REPEATABLE  READ  SERIALIZABLE. 
      14. 

    13.8.  

              
.      ,    
 ( ,      .  14 
 16 ).      , 
,   .     
      .  ,  
       . 
       BEGIN TRANSACTION    
  TRANSACTION (   ),  ROLLBACK 
TRANSACTICN (   ).  COMMIT  
  (    ).  
 ROLLBACK        
( ).      
,       ROLLBACK 
( ).      
   (  ).  ,  
          
    COMMIT    ( 
     ). 
              
 .      , -, 
   ,  ,   
   , , -,   ,  
,  ,      . 
       ( 
  /).   
  ,  ,    
 ,   .      
   . 
           
      ()   

    362	 IV.   

         ,   
  .      
    . 
    ,      
  (,   ),   
,   ,      
 .      ,   
       "  
",   ,   , ,    
  ,  ,   . 
         SQL,  ,  
SQL       ROLLBACK (   
 BEGIN).     SET TRANSACTION,  
         
  . 
       .   ,        
 .   ,       
    (       
 ). ,  SQL    
 SQL-   .    
 SQL-   ;    
       COMMIT, 
   SQL-  ( ,   
ROLLBACK,   ).   ,    
      COMMIT,   
     SQL (     
COMMIT)   .       
,            
         .  
,         
 ,           
 (      ). 

     

    13.1.         
  , ..       
 . ? 
    13.2.        . ? 
    13.3.      .    ? 
    13.4.     : )  
        COMMIT; ) ,  
          COMMIT? 
    13.5.         
     ) , ) . 

      

    13.1. Bernstein P.A., Hadzilacos V., Goodman N. Concurrency Control and 
Recovery in Database Systems.  Reading, Mass.: Addison-Wesley, 1987. 
        ,    ,   
 ,     . 

     13. 	363 

    13.2. Bjork L.A. Recovery Scenario for a DB/DC System // Proc. ACM 
National Conference. Atlanta, Ga, 1973. 
         (Davies) [13.6]  , 
,      . 
    13.3. Cms R.A. Data Recovery in IBM DATABASE 2 // IBM Sys. J.  1984. 23, 
 2. 
         DB2 (    
    ).  , , 
 DB2          
,         .  
       ,  
         . 
    13.4. Date C.J. Recovery // An Introduction to Database Systems: Vol. II. 
Reading, Mass.: Addison-Wesley, 1983. 
             . 
    13.5. Date C.J. Distributed Database: A closer Look // C.J. Date and Hugh 
Darwen. Relational Database Writings 1989-1991.  Reading, Mass.: 
Addison-Wesley, 1992. 
           .  
   . ,    
     1,       
   (..     ),     
    2. ,      1  
"  ",  2   . 
        .     
   .     
    (   ), 
   (       
),   ,       
       . 
    13.6. Davies C.T., Recovery Jr. Semantics for a DB/DC System // Proc. ACM 
National Conf.  Atlanta, Ga, 1973. 
    .   [13.2]. 
    13.7. Davies .., Recovery Jr. Data Processing Spheres of Control // IBM 
Sys. J.  1978.17, 2. 
      (Spheres of Control)      
 ,      .  
   ,   ,   
  .    ,    
       (     
 ,         ). 
    13.8. Garcia-Molina H., Salem . Sagas // Proc. 1987 ACM SIGMOD Intern. 
Conf. on Management of Data.  San Francisco, Calif., 1987. 
     ,   ,   ,   
      (-   
).      (, , ),   
       ; ,    
 ,         
  ,      ( 
 

    364	 IV.   

        ).  ,   
      ,    
 ,        . 
         .  (saga)    
       ,    
     ,    
  ,     
       ( , 
 ,      ). ,   
    " $100   ",  
, ,  " $100   ".   
COMMIT      ,     
       . 
,         . 
    13.9. Gray J. Notes on Data Base Operating System // Operating Systems: An 
Advanced Course. New York, N.Y.: Springer-Verlag, 1978. 
           ,   
    . ,    
,     [13.11],    ,    
   . 
    13.10. Gray J. The Transaction Concept: Virtues and Limitations // Proc. 
7th Intern. Conf. on Very Large Data Bases.  Cannes, France, 1981. 
      ,   ,   . 
  ,        ( 
     ,      
   ).  , - ,    
  ""?   : "!"    
         
         
   ,      . 
        
.  ,          
,    COMMIT; ,  
,        ,    
      . 
    13.11. Gray J., Reuter A. Transaction Processing: Concepts and 
Techniques. San Mateo, Calif: Morgan Kaufrnann, 1993. 
     -       
"",  , ,  .     
(1000 ),           
      .    
         ;  
       ,  
  ,      
.     . 
    13.12. Gray J. et al. The Recovery Manager of the System R Data Manager // 
ACM . Surv.  1981.  13,  2. 
     [13.12, 13.15]      
 R.  [13.12]      ,   
[13.15]      (. ). 

     13. 	365 

    13.13. Harder ., Reuter A. Principles of Transaction-Oriented Database 
Recovery // Ibid. 1983. 15, 4. 
         , , 
, .         
 .      
  . 
       ,     
       (,   
 )   . 
     	 	  
       	10-100       
     	      
1-2  
    13.14. Korth H.F., Levy E., Silberschatz A. A Formal Approach to Recovery 
by Compensating Transactions // Proc. 16th Intern. Conf. on Very Large Data 
Bases.  Brisbane, Australia, 1990. 
         ,    
 [13.8]      ""  (   
) . 
    13.15. Lorie R. A. Physical Integrity in a Large Segmented Database // ACM 
TODS.  
    1977. 2,  1. 
          [13.12],     
          
 R. (,    (Integrity)    
 ,       .) 
         .   
      ,     
 ,    -  .   
  "" .      
      ; ,  
         
 . 
      ,       
,     ,  
   ,        DB2. 
    13.16. Mohan ., Haderle D., Lindsay . et al. ARIES: A Transaction 
Recovery Method Supporting Fine-Granularity Locking and Partial Rollbacks 
Using Write-Ahead Logging // Ibid.  1992.  17,  1. 
        ARIES,     
   ,   DB2.  ARIES 
(Algorithm for Recovery and Isolation Exploiting Semantics)  
      . 

        

    13.1.       .   
  ,     ,  
     ,    
 ,  ,  .  ,  
      "   ". 

    366  IV,   

    13.2.         
. ,       ,  
   : 

    BEGIN TRANSACTION ( )      
    BEGIN TRANSACTION ( ) 

         

    CCMMIT ( ) ROLLBACK ( ) 

      b      (  
pre-),  COMMIT  ,  ,   .   
 COMMIT    ,   b    
    pre- , ,  ROLLBACK 
     . 
     ,       . 
       (,  [13.6])   
      ( 
""  )   .  ,   COMMIT, 
  ,    ,  
    .      
  ,      . 
    COMMIT       
    ,     ,   
    . 
    ,     ,  SQL,   
 ,           
  BEGIN TRANSACTION (    
        ,  
  ). 
    13.4. )  REDO (     
); )   UNDO (  , , 
  UNDO    ). 

     13. 	367 
