, . .
. redo, .
, :
- ;
- , , .
, , , . , .
, . . , , , .
, , . . " ", . , , , , .
, . . , , , . |
21.
, . , . , , . . . , .
, , 4 :
|
.
|
|
|
|
|
|
( ):
- , , , S (Shared). . , , , ;
- , , , X (eXclusive). , . , , .
, , , . . 7:
. 7.
|
|
, . 7 , , .
. 8 1 2, . , , 2 1, 2. 2 1, .
. 8.
, . . ( ) .
, . 1, 2. B, , 2, 1. , : B 2, 1 (. . 9).
. 9.
. . . . , .
( ) . . . . , . , . . . 10.
1, 2,___,12, A,,...,.
, , . 1.
. 10.
1. | ||
T1 | Select A | |
T2 | Select B | |
T1 | Select C | |
T4 | Select D | |
T5 | Select A | |
T2 | Select E | |
T2 | Update E | |
T3 | Select F | |
T2 | Select F | |
T5 | Update A | |
T1 | Commit | |
T6 | Select A | |
T5 | Commit | |
T6 | Select C | |
T6 | Update C | |
T7 | Select G | |
T8 | Select H | |
T9 | Select G | |
T9 | Update G | |
T8 | Select E | |
T7 | Commit | |
T9 | Select H | |
T3 | Select G | |
T10 | Select A | |
T9 | Update H | |
T6 | Commit | |
T11 | Select C | |
T12 | Select D | |
T12 | Select C | |
T2 | Update F | |
T11 | Update C | |
T12 | Select A | |
T10 | Update A | |
T12 | Update D | |
T2 | Select G | |
- | - |
, S () , X () .
, 9, 8, 2 3 . . 3 .
-, , , .
; . , , , .
- , . , , .
|
|
. . . , , , , . , - -, . - -, .
, , . ( ) .
, , , -, -. ( , , , .) -, , , ( ). , , . , .
, .
, , - , . .
, , . 2PL(two phase lock) 2PC (two phase commit). :
- ;
- ( ) .
SQL , . :
LOCK TABLE _ IN {SHARED | EXCLUSIVE} MODE, , . .
, , . , .