ìŒ | ì | í | ì | 목 | êž | í |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- ë¬ì€íž íë¡ê·žëë° ê³µì ê°ìŽë
- Python
- ë¬ì€íž
- ë°ìŽí° íµì
- data communication
- C
- íìŽì¬ ìê³ ëŠ¬ìŠ
- ubuntu
- Operating System
- Python challenge
- íìŽì¬ ì±ëŠ°ì§
- íìŽì¬ 첌늰ì§
- íìŽì¬
- ìŽì첎ì
- Database
- ë°ìŽí°ë² ìŽì€
- ìê³ ëŠ¬ìŠ
- ìë° ê°ë
- ìë°
- ì€ëŒíŽ
- ì°ë¶í¬
- ë°±ì€
- java
- ì€ëŒíŽDB
- ë¬ì€íž ìì
- Rust
- ìë° êž°ìŽ
- OS
- ë°±ì€ ë¬ì€íž
- Reversing
Archives
- Today
- Total
IT’s Portfolio
[Lecture] DataBase - Day 10 볞묞
728x90
ë°ìí
ð¥ DataBase - Day 10
ðð» [Chapter 10] í복곌 ë³í ì ìŽ
[01] ížëìì
- 1.1 ížëìì
ì ê°ë
ížëìì (transaction)
: ìì íë륌 ìííë ë° íìí ë°ìŽí°ë² ìŽì€ì ì°ì°ë€ì 몚ìëì ê²- ë ŒëŠ¬ì ìž ìì ì ëšì
- ìì
ìíì íìí SQL 묞ë€ì 몚ì
- insert, delete, update 묞ì ì€í êŽëŠ¬
- ì¥ì ê° ë°ìíì ë ë°ìŽí°ë¥Œ 복구íë ìì ìŽë ë³í ì ìŽ ìì ì ìí ì€ìí ëšì
- ë°ìŽí°ë² ìŽì€ì 묎결ì±ê³Œ ìŒêŽì±ì 볎ì¥íë €ë©Ž ìì ì ìííë ë° íìí ì°ì°ë€ì íëì ížëìì ìŒë¡ ì ëë¡ ì ìíê³ êŽëŠ¬íŽìŒ íš
- 1.2 ížëìì
ì í¹ì±(ACID í¹ì±)
ììì±(atomicity)
- ížëìì
ì 구ì±íë ì°ì°ë€ìŽ 몚ë ì ìì ìŒë¡ ì€íëê±°ë íëë ì€íëì§ ìììŒ íë€ë
all-or-nothing
ë°©ìì ì믞 - ížëìì ì ìííë€ê° ì¥ì ê° ë°ìíì¬ ìì ì ìë£íì§ ëª»íë€ë©Ž, ì§êžê¹ì§ ì€íí ì°ì° ì²ëŠ¬ë¥Œ 몚ë ì·šìíê³ ë°ìŽí°ë² ìŽì€ë¥Œ ížëìì ìì ì ì ìíë¡ ëëë € ížëìì ì ììì±ì 볎ì¥íŽìŒ íš
- ììì±ì 볎ì¥íë €ë©Ž ì¥ì ê° ë°ìíì ë ë°ìŽí°ë² ìŽì€ì ìë ìíë¡ ë³µêµ¬íë íë³µ êž°ë¥ íì
- ììì±ì DBMSì êž°ë¥ ì€ íë³µ êž°ë¥ì ëìíš
- ížëìì
ì 구ì±íë ì°ì°ë€ìŽ 몚ë ì ìì ìŒë¡ ì€íëê±°ë íëë ì€íëì§ ìììŒ íë€ë
ìŒêŽì±(consistency)
- ížëìì ìŽ ì±ê³µì ìŒë¡ ìíë íìë ë°ìŽí°ë² ìŽì€ê° ìŒêŽë ìí륌 ì ì§íŽìŒ íšì ì믞
- ìŒêŽì±ì DBMSì êž°ë¥ ì€ ë³í ì ìŽ êž°ë¥ì ëìíš
격늬ì±(isolation)
= ê³ ëŠœì±- ìí ì€ìž ížëìì ìŽ ìë£ë ëê¹ì§ ížëìì ìŽ ìì±í ì€ê° ì°ì° 결곌ì ë€ë¥ž ížëìì ë€ìŽ ì ê·Œí ì ììì ì믞
- 격늬ì±ì 볎ì¥ì ìíŽìë ížëìì ë€ìŽ ëìì ìíëë ê²ì²ëŒ ëëŒë©Žìë ììëë¡ íëì© ìíëë ê²ì²ëŒ ì ííê³ ìŒêŽë 결곌륌 ì»ì ì ìëë¡ ì ìŽíë êž°ë¥ íì
- 격늬ì±ì DBMSì êž°ë¥ ì€ ë³í ì ìŽ êž°ë¥ì ëìíš
ì§ìì±(durability)
= ììì±- ížëìì ìŽ ì±ê³µì ìŒë¡ ìë£ë í ë°ìŽí°ë² ìŽì€ì ë°ìí ìí 결곌ë ìŽë í 겜ì°ìë ìì€ëì§ ìê³ ì구ì ìŽìŽìŒ íšì ì믞
- ì§ìì±ì 볎ì¥íë €ë©Ž ìì€í ì ì¥ì ê° ë°ìíì ë ë°ìŽí°ë² ìŽì€ë¥Œ ìë ìíë¡ ë³µêµ¬íë íë³µ êž°ë¥ íì
- ì§ìì±ì DBMSì êž°ë¥ ì€ íë³µ êž°ë¥ì ëìíš
- 1.3 ížëìì
ì ì°ì°
commit
ì°ì°- ížëìì ìŽ ì±ê³µì ìŒë¡ ìíëììì ì ìž(ìì ìë£)
commit
ì°ì°ìŽ ì€íë íììŒ ížëìì ì ìí ê²°ê³Œê° ë°ìŽí°ë² ìŽì€ì ë°ìëìŽ ë°ìŽí°ë² ìŽì€ê° ìŒêŽë ìí륌 ì§ìì ìŒë¡ ì ì§íê² ëš
rollback
ì°ì°- ížëìì ì ìííë ë° ì€íšíìì ì ìž(ìì ì·šì)
rollback
ì°ì°ìŽ ì€íëë©Ž ížëìì ìŽ ì§êžê¹ì§ ì€íí ì°ì°ì ê²°ê³Œê° ì·šìëê³ ížëìì ìŽ ìíëêž° ì ì ìíë¡ ëìê°
- 1.4 ížëìì
ì ìí
íë ìí(active)
- ížëìì ìŽ ìíëêž° ììíì¬ íì¬ ìí ì€ìž ìí
ë¶ë¶ ìë£ ìí(partially committed)
- ížëìì ì ë§ì§ë§ ì°ì°ìŽ ì€íë ì§íì ìí
ìë£ ìí(committed)
- ížëìì
ìŽ ì±ê³µì ìŒë¡ ìë£ëìŽ
commit
ì°ì°ì ì€íí ìí - ížëìì ìŽ ìë£ ìíê° ëë©Ž ížëìì ìŽ ìíí ìµì¢ 결곌륌 ë°ìŽí°ë² ìŽì€ì ë°ìíê³ , ë°ìŽí°ë² ìŽì€ê° ìë¡ìŽ ìŒêŽë ìíê° ëë©Žì ížëìì ìŽ ì¢ ë£ëš
- ížëìì
ìŽ ì±ê³µì ìŒë¡ ìë£ëìŽ
ìªíš ìí(failed)
- ì¥ì ê° ë°ìíì¬ ížëìì ì ìíìŽ ì€ëšë ìí
ì² í ìí(aborted)
- ížëìì
ì ìííë ë° ì€íšíì¬
rollback
ì°ì°ì ì€íí ìí - ì§êžê¹ì§ ì€íí ížëìì ì ì°ì°ì 몚ë ì·šìíê³ ížëìì ìŽ ìíëêž° ì ì ë°ìŽí°ë² ìŽì€ ìíë¡ ëë늬멎ì ížëìì ìŽ ì¢ ë£ëš
- ì² í ìíë¡ ì¢ ë£ë ížëìì ì ìí©ì ë°ëŒ ë€ì ìíëê±°ë íêž°ëš
- ížëìì
ì ìííë ë° ì€íšíì¬
[02] ì¥ì ì íë³µ
- 2.1 ì¥ì ì ì í
ì¥ì (failure)
: ìì€í ìŽ ì ëë¡ ëìíì§ ìë ìí- ížëìì
ì¥ì : ížëìì
ìí ì€ ì€ë¥ê° ë°ìíì¬ ì ìì ìŒë¡ ìíì ê³ìí ì ìë ìí
- ížëìì ì ë ŒëŠ¬ì ì€ë¥
- ì못ë ë°ìŽí° ì ë ¥
- ìì€í ììì ê³Œë€ ì¬ì© ì구
- ì²ëŠ¬ ëì ë°ìŽí°ì ë¶ì¬
- ìì€í
ì¥ì : íëìšìŽì ê²°íšìŒë¡ ì ìì ìŒë¡ ìíì ê³ìí ì ìë ìí
- íëìšìŽ ìŽììŒë¡ ë©ìž ë©ëªšëŠ¬ì ì ì¥ë ì ë³Žê° ìì€ëê±°ë êµì°© ìíê° ë°ìí 겜ì°
- 믞ëìŽ ì¥ì : ëì€í¬ ì¥ì¹ì ê²°íšìŒë¡ ëì€í¬ì ì ì¥ë ë°ìŽí°ë² ìŽì€ì ìŒë¶ í¹ì ì ì²Žê° ììë ìí
- ëì€í¬ í€ëì ìììŽë ê³ ì¥
- ížëìì
ì¥ì : ížëìì
ìí ì€ ì€ë¥ê° ë°ìíì¬ ì ìì ìŒë¡ ìíì ê³ìí ì ìë ìí
- 2.2 ë°ìŽí°ë² ìŽì€ì ì ì¥ ì°ì°
- ì ì¥ ì¥ì¹ì ì¢
ë¥
íë°ì±(volatile) ì ì¥ ì¥ì¹
= ìë©žì± : ì¥ì ê° ë°ìíë©Ž ì ì¥ë ë°ìŽí°ê° ìì€ëš- ë©ìž ë©ëªšëŠ¬
ë¹íë°ì±(nonvolatile) ì ì¥ ì¥ì¹
= ë¹ìë©žì± : ì¥ì ê° ë°ìíŽë ì ì¥ë ë°ìŽí°ê° ìì€ëì§ ìì(ì ì¥ ì¥ì¹ ì첎ì ìŽììŽ ë°ìíë©Ž ë°ìŽí°ê° ìì€ë ì ìì)- ëì€í¬
- ìêž° í ìŽí
- CD/DVD
ìì (stable) ì ì¥ ì¥ì¹
: ë¹íë°ì± ì ì¥ ì¥ì¹ë¥Œ ìŽì©íŽ ë°ìŽí° ë³µì¬ë³ž ì¬ë¬ ê°ë¥Œ ë§ëë ë°©ë²ìŒë¡, ìŽë€ ì¥ì ê° ë°ìíŽë ë°ìŽí°ê° ìì€ëì§ ìê³ ë°ìŽí°ë¥Œ ì구ì ìŒë¡ ì ì¥í ì ìì
- ëì€í¬ì ë©ìž ë©ëªšëŠ¬ ê°ì ë°ìŽí° ìŽëì íìì±
- ìŒë°ì ìŒë¡ ë°ìŽí°ë² ìŽì€ë ë¹íë°ì± ì ì¥ ì¥ì¹ìž ëì€í¬ì ì죌íš
- ížëìì ìŽ ë°ìŽí°ë² ìŽì€ì ë°ìŽí°ë¥Œ ì²ëŠ¬íë €ë©Ž ë°ìŽí°ë¥Œ ëì€í¬ìì ë©ìž ë©ëªšëŠ¬ë¡ ê°ì žì ìŽë¥Œ ì²ëŠ¬í í ê·ž 결곌륌 ë€ì ëì€í¬ë¡ 볎ëŽë ìì ìŽ íìíš
- ëì€í¬ì ë©ìž ë©ëªšëŠ¬ ê°ì ë°ìŽí° ìŽë
ëžë¡(block)
ëšì ìí- ëì€í¬ì ìë ëžë¡ì ëì€í¬ ëžë¡
- ë©ìž ë©ëªšëŠ¬ì ìë ëžë¡ì ë²íŒ ëžë¡
input
ì°ì°input(X)
: ëì€í¬ ëžë¡ì ì ì¥ëìŽ ìë ë°ìŽí° X륌 ë©ìž ë©ëªšëŠ¬ ë²íŒ ëžë¡ìŒë¡ ìŽëìí€ë ì°ì°
output
ì°ì°output(X)
: ë©ìž ë©ëªšëŠ¬ ë²íŒ ëžë¡ì ìë ë°ìŽí° X륌 ëì€í¬ ëžë¡ìŒë¡ ìŽëìí€ë ì°ì°
- ë©ìž ë©ëªšëŠ¬ì ë²íŒ ëžë¡ê³Œ íë¡ê·žëš ë³ì ê°ì ë°ìŽí° ìŽë
- ìì© íë¡ê·žëšìì ížëìì ì ìíì ì§ìíë©Ž ë©ìž ë©ëªšëŠ¬ ë²íŒ ëžë¡ì ìë ë°ìŽí°ë¥Œ íë¡ê·žëšì ë³ìë¡ ê°ì žì€ê³ , ë°ìŽí° ì²ëŠ¬ 결곌륌 ì ì¥í ë³ì ê°ì ë©ìž ë©ëªšëŠ¬ ë²íŒ ëžë¡ìŒë¡ ì®êž°ë ìì ìŽ ì¶ê°ë¡ íìíš
read
ì°ì°read(X)
: ë©ìž ë©ëªšëŠ¬ ë²íŒ ëžë¡ì ì ì¥ëìŽ ìë ë°ìŽí° X륌 íë¡ê·žëšì ë³ìë¡ ìœìŽì€ë ì°ì°
write
ì°ì°write(X)
: íë¡ê·žëšì ë³ì ê°ì ë©ìž ë©ëªšëŠ¬ ë²íŒ ëžë¡ì ìë ë°ìŽí° Xì êž°ë¡íë ì°ì°
- ì ì¥ ì¥ì¹ì ì¢
ë¥
- 2.3 íë³µ êž°ë²
íë³µ(recovery)
: ë°ìŽí°ë² ìŽì€ì ì¥ì ê° ë°ìíì ë ì¥ì ê° ë°ìíêž° ì ì 몚ììŽ ìê³ ìŒêŽë ìíë¡ ë³µêµ¬ìí€ë ê²íë³µ êŽëŠ¬ì(recovery manager)
- ì¥ì ë°ìì íì§íê³ , ì¥ì ê° íì§ëë©Ž ë°ìŽí° ë² ìŽì€ 복구 êž°ë¥ì ì ê³µ
- ížëìì ì í¹ì±ì 볎ì¥íê³ , ë°ìŽí°ë² ìŽì€ë¥Œ ìŒêŽë ìíë¡ ì ì§íêž° ìíŽ íìì ìž êž°ë¥
- íë³µì ìí ì°ì°
- ë°ìŽí°ë² ìŽì€ íë³µì íµì¬ ì늬ë ë°ìŽí° ì€ë³µ
ë€í(dump)
: ë°ìŽí°ë² ìŽì€ ì 첎륌 ë€ë¥ž ì ì¥ ì¥ì¹ì 죌Ʞì ìŒë¡ ë³µì¬íë ë°©ë²ë¡ê·ž(log)
: ë°ìŽí°ë² ìŽì€ìì ë³ê²œ ì°ì°ìŽ ì€íë ëë§ë€ ë°ìŽí°ë¥Œ ë³ê²œíêž° ìŽì ê°ê³Œ ë³ê²œí ìŽíì ê°ì ë³ëì íìŒì êž°ë¡íë ë°©ë²
redo(ì¬ì€í)
ì°ì°- ê°ì¥ ìµê·Œì ì ì¥í ë°ìŽí°ë² ìŽì€ ë³µì¬ë³žì ê°ì žìš í ë¡ê·žë¥Œ ìŽì©íŽ ë³µì¬ë³žìŽ ë§ë€ìŽì§ ìŽíì ì€íë 몚ë ë³ê²œ ì°ì°ì ì¬ì€ííì¬ ì¥ì ê° ë°ìíêž° ì§ì ì ë°ìŽí°ë² ìŽì€ ìíë¡ ë³µêµ¬(ì ë°ì ìŒë¡ ììë 겜ì°ì ì£Œë¡ ì¬ì©)
undo(ì·šì)
ì°ì°- ë¡ê·žë¥Œ ìŽì©íŽ ì§êžê¹ì§ ì€íë 몚ë ë³ê²œ ì°ì°ì ì·šìíì¬ ë°ìŽí°ë² ìŽì€ë¥Œ ìëì ìíë¡ ë³µêµ¬(ë³ê²œ ì€ìŽìê±°ë ìŽë¯ž ë³ê²œë ëŽì©ë§ ì 뢰ì±ì ìì 겜ì°ì ì£Œë¡ ì¬ì©)
- ë°ìŽí°ë² ìŽì€ íë³µì íµì¬ ì늬ë ë°ìŽí° ì€ë³µ
- ë¡ê·ž íìŒ
- ë°ìŽí°ë² ìŽì€ì ëí ë³ê²œ ì°ì°ê³Œ êŽë šíì¬, ë°ìŽí°ë¥Œ ë³ê²œíêž° ìŽì ì ê°ê³Œ ë³ê²œí ìŽíì ê°ì êž°ë¡í ê²
- ë ìœë ëšìë¡ ížëìì ì ìí곌 íšê» êž°ë¡
- ë¡ê·ž ë ìœëì ì¢
ë¥
- $<T_i$ , start $>$ : ížëìì $T_i$ê° ìíì ììíìì êž°ë¡
- $<T_i, X$, old_value, new_value $>$ : ížëìì $T_i$ê° ë°ìŽí° $X$륌 ìŽì ê°ìì ìë¡ìŽ ê°ìŒë¡ ë³ê²œíë ì°ì°ì ì€ííìì êž°ë¡
- $<T_i$ , commit $>$ : ížëìì $T_i$ê° ì±ê³µì ìŒë¡ ìë£ëììì êž°ë¡
- $<T_i$ , abort $>$ : ížëìì $T_i$ê° ì² íëììì êž°ë¡
- ë°ìŽí°ë² ìŽì€ì ëí ë³ê²œ ì°ì°ê³Œ êŽë šíì¬, ë°ìŽí°ë¥Œ ë³ê²œíêž° ìŽì ì ê°ê³Œ ë³ê²œí ìŽíì ê°ì êž°ë¡í ê²
- ë°ìŽí°ë² ìŽì€ íë³µ êž°ë²
- ë¡ê·ž íë³µ êž°ë²
ìŠì ê°±ì (immediate update) íë³µ êž°ë²
- ížëìì ìí ì€ì ë°ìŽí°ë¥Œ ë³ê²œí ì°ì°ì 결곌륌 ë°ìŽí°ë² ìŽì€ì ìŠì ë°ì
- ì¥ì ë°ìì ëë¹íêž° ìíŽ ë°ìŽí° ë³ê²œì ëí ëŽì©ì ë¡ê·ž íìŒìë êž°ë¡
- ë°ìŽí° ë³ê²œ ì°ì°ìŽ ì€íëìì ë ë¡ê·ž íìŒì ë¡ê·ž ë ìœë륌 뚌ì êž°ë¡í í ë°ìŽí°ë² ìŽì€ì ë³ê²œ ì°ì°ì ë°ì
- ì¥ì ë°ì ìì ì ë°ëŒ
redo
ëundo
ì°ì°ì ì€ííì¬ ë°ìŽí°ë² ìŽì€ 복구 undo
ì°ì° ì€í- ížëìì ìŽ ìë£ëêž° ì ì ì¥ì ê° ë°ìí 겜ì°
redo
ì°ì° ì€í- ížëìì ìŽ ìë£ë íì ì¥ì ê° ë°ìí 겜ì°
ì§ì° ê°±ì (deferred update) íë³µ êž°ë²
- ížëìì ìŽ ìíëë ëììë ë°ìŽí° ë³ê²œ ì°ì°ì 결곌륌 ë°ìŽí°ë² ìŽì€ì ìŠì ë°ìíì§ ìê³ ë¡ê·ž íìŒìë§ êž°ë¡íŽëìë€ê°, ížëìì ìŽ ë¶ë¶ ìë£ë íì ë¡ê·žì êž°ë¡ë ëŽì©ì ìŽì©íŽ ë°ìŽí°ë² ìŽì€ì í ë²ì ë°ì
- ížëìì ìŽ ìíëë ëì ì¥ì ê° ë°ìí ê²œì° ë¡ê·žì êž°ë¡ë ëŽì©ì ë²ëŠ¬êž°ë§ íë©Ž ë°ìŽí°ë² ìŽì€ê° ìë ìí륌 ê·žëë¡ ì ì§íê² ëš
undo
ì°ì°ì íì ìê³redo
ì°ì°ë§ íìíš- ë¡ê·ž ë ìœëì ë³ê²œ ìŽì ê°ì êž°ë¡í íì ìì
- $<T_i, X$, new_value $>$
- ë¡ê·ž ëŽì©ì 묎ìíê³ ë²ëŠŒ
- ížëìì ìŽ ìë£ëêž° ì ì ì¥ì ê° ë°ìí 겜ì°
redo
ì°ì° ì€í- ížëìì ìŽ ìë£ë íì ì¥ì ê° ë°ìí 겜ì°
- ê²ì¬ ìì íë³µ êž°ë²
- ë¡ê·ž êž°ë¡ì ìŽì©íë, ìŒì ìê° ê°ê²©ìŒë¡
ê²ì¬ ìì (checkpoint)
ì ë§ëŠ- ê²ì¬ ìì ìŽ ëë©Ž ë©ìž ë©ëªšëŠ¬ì ìë 몚ë ë¡ê·ž ë ìœë륌 ìì ì ì¥ ì¥ì¹ì ìë ë¡ê·ž íìŒì êž°ë¡íê³ , ížëìì ì ë°ìŽí° ë³ê²œ ëŽì©ì ë°ìŽí°ë² ìŽì€ì ë°ì
- ê²ì¬ ìì ì íìíë
<checkpoint L>
íìì ë¡ê·ž ë ìœë륌 ë¡ê·ž íìŒì êž°ë¡<checkpoint L>
ìì Lì íì¬ ì€íëê³ ìë ížëìì ì 늬ì€ížë¥Œ ì믞
- ì¥ì ë°ì ì ë¡ê·ž íìŒìì ê°ì¥ ìµê·Œì
<checkpoint L>
ë¡ê·ž ë ìœë륌 ì°Ÿì ê·ž ìŽíì ë¡ê·ž êž°ë¡ìë§ íë³µ ìì ì ìí- íë³µ ìì ì ìŠì ê°±ì íë³µ êž°ë²ìŽë ì§ì° ê°±ì íë³µ êž°ë²ì ìŽì©íŽ ìí
- íë³µ ìì ì ë²ìê° ê²ì¬ ìì ìŒë¡ ì íŽì§ë¯ë¡ ë¶íìí íë³µ ìì ì ìííì§ ìì ë°ìŽí°ë² ìŽì€ íë³µ ìê°ìŽ ëšì¶ëš
- ë¡ê·ž êž°ë¡ì ìŽì©íë, ìŒì ìê° ê°ê²©ìŒë¡
- 믞ëìŽ íë³µ êž°ë²
- ëì€í¬ì ë°ìí ì ìë ì¥ì ì ëë¹í íë³µ êž°ë²
ë€í(dump)
ìŽì©- ì 첎 ë°ìŽí°ë² ìŽì€ì ëŽì©ì ìŒì 죌Ʞë§ë€ ë€ë¥ž ìì í ì ì¥ ì¥ì¹ì ë³µì¬
- ëì€í¬ ì¥ì ê° ë°ìíë©Ž ê°ì¥ ìµê·Œì ë³µì¬íŽë ë€í륌 ìŽì©íŽ ì¥ì ë°ì ìŽì ì ìŒêŽë ë°ìŽí°ë² ìŽì€ ìíë¡ ë³µêµ¬ í íìì ë°ëŒ ë¡ê·žì ëŽì©ì í ëë¡
redo
ì°ì° ì€í
- ë¡ê·ž íë³µ êž°ë²
[03] ë³í ì ìŽ
- 3.1 ë³í ìí곌 ë³í ì ìŽ
ë³í ìí(concurrency)
- ì¬ë¬ ì¬ì©ìê° ë°ìŽí°ë² ìŽì€ë¥Œ ëìì ê³µì í ì ìëë¡ ì¬ë¬ ê°ì ížëìì ìŽ ëìì ìí
- ì¬ë¬ ížëìì
ìŽ ì°šë¡ë¡ ë²ê°ì ìíëë
ìží°ëŠ¬ë¹(interleaving)
ë°©ììŒë¡ ì§íëš
ë³í ì ìŽ(concurrency control) or ëìì± ì ìŽ
- ë³í ìí ì ê°ì ë°ìŽí°ì ì ê·Œíì¬ ì°ì°ì ì€ííŽë 묞ì ê° ë°ìíì§ ìê³ ì íí ìí 결곌륌 ì»ì ì ìëë¡ ížëìì ì ìíì ì ìŽíë ê²
- 3.2 ë³í ìíì 묞ì
ê°±ì ë¶ì€(lost update)
- íëì ížëìì ìŽ ìíí ë°ìŽí° ë³ê²œ ì°ì°ì 결곌륌 ë€ë¥ž ížëìì ìŽ ë®ìŽìš ë³ê²œ ì°ì°ìŽ 묎íšíëë ê²
- ì¬ë¬ ížëìì ìŽ ëìì ìíëëëŒë ê°±ì ë¶ì€ 묞ì ê° ë°ìíì§ ìê³ ìì°šì ìŒë¡ ìíí ê²ê³Œ ê°ì 결곌 ê°ì ì»ì ì ììŽìŒ ì íí ë³í ìíìŽëŒ í ì ìì
몚ìì±(inconsistency)
- íëì ížëìì ìŽ ì¬ë¬ ê°ì ë°ìŽí° ë³ê²œ ì°ì°ì ì€íí ë ìŒêŽì± ìë ìíì ë°ìŽí°ë² ìŽì€ìì ë°ìŽí°ë¥Œ ê°ì žì ì°ì°ì ì€ííšìŒë¡ìš 몚ìë ê²°ê³Œê° ë°ìíë ê²
- ì¬ë¬ ížëìì ìŽ ëìì ìíëëëŒë 몚ìì±ì 묞ì ê° ë°ìíì§ ìê³ ìì°šì ìŒë¡ ìíí ê²ê³Œ ê°ì 결곌 ê°ì ì»ì ì ììŽìŒ ì íí ë³í ìíìŽëŒ í ì ìì
ì°ì ë³µê·(cascading rollback)
- ížëìì
ìŽ ìë£ëêž° ì ì ì¥ì ê° ë°ìíì¬
rollback
ì°ì°ì ìííë©Ž, ìŽ ížëìì ìŽ ì¥ì ë°ì ì ì ë³ê²œí ë°ìŽí°ë¥Œ ê°ì žê° ë³ê²œ ì°ì°ì ì€íí ë ë€ë¥ž ížëìì ìërollback
ì°ì°ì ì°ìì ìŒë¡ ì€ííŽìŒ íë€ë ê² - ì¬ë¬ ížëìì ìŽ ëìì ìíëëëŒë ì°ì ë³µê·ì 묞ì ê° ë°ìíì§ ìê³ ìì°šì ìŒë¡ ìíí ê²ê³Œ ê°ì 결곌 ê°ì ì»ì ì ììŽìŒ ì íí ë³í ìíìŽëŒ í ì ìì
- ížëìì
ìŽ ìë£ëêž° ì ì ì¥ì ê° ë°ìíì¬
- 3.3 ížëìì
ì€ìŒì€
- ížëìì ì í¬íšëìŽ ìë ì°ì°ë€ì ìííë ìì
ì§ë ¬ ì€ìŒì€(serial schedule)
- ìží°ëŠ¬ë¹ ë°©ìì ìŽì©íì§ ìê³ ížëìì ë³ë¡ ì°ì°ë€ì ìì°šì ìŒë¡ ì€íìí€ë ê²
- í¹ì§
- ížëìì ìŽ ì§ë ¬ ì€ìŒì€ì ë°ëŒ ìíëë©Ž, 몚ë ížëìì ìŽ ìë£ë ëê¹ì§ ë€ë¥ž ížëìì ì ë°©íŽë¥Œ ë°ì§ ìê³ ë 늜ì ìŒë¡ ìíëë¯ë¡ íì 몚ììŽ ìë ì íí 결곌륌 ì»ì
- ë€ìí ì§ë ¬ ì€ìŒì€ìŽ ë§ë€ìŽì§ ì ìê³ , ì§ë ¬ ì€ìŒì€ë§ë€ ë°ìŽí°ë² ìŽì€ì ë°ìëë ìµì¢ ê²°ê³Œê° ë¬ëŒì§ ì ìì§ë§ ì§ë ¬ ì€ìŒì€ì 결곌ë 몚ë ì ííš
- ê° ížëìì ì ë 늜ì ìŒë¡ ìííêž° ë묞ì ížëìì ë€ìŽ ëìì ìíëë ë³í ìíìŽëŒê³ í ì ìì
ë¹ì§ë ¬ ì€ìŒì€(nonserial schedule)
- ìží°ëŠ¬ë¹ ë°©ìì ìŽì©íì¬ ížëìì ì ë³ííŽì ìíìí€ë ê²
- í¹ì§
- ížëìì ìŽ ëìê°ë©Žì ì°ì°ë€ì ì€ííêž° ë묞ì íëì ížëìì ìŽ ìë£ëêž° ì ì ë€ë¥ž ížëìì ì ì°ì°ìŽ ì€íë ì ìì
- ë¹ì§ë ¬ ì€ìŒì€ì ë°ëŒ ì¬ë¬ ížëìì ì ë³í ìííë©Ž ê°±ì ë¶ì€, 몚ìì±, ì°ì ë³µê· ë±ì 묞ì ê° ë°ìí ì ììŽ ìµì¢ ìí 결곌ì ì íì±ì 볎ì¥í ì ìì
- ë€ìí ë¹ì§ë ¬ ì€ìŒì€ìŽ ë§ë€ìŽì§ ì ìê³ , ê·ž ì€ ì못ë 결곌륌 ìì±íë ë¹ì§ë ¬ ì€ìŒì€ë ìì
ì§ë ¬ ê°ë¥ ì€ìŒì€(serializable schedule)
- ì§ë ¬ ì€ìŒì€ì ë°ëŒ ìíí ê²ê³Œ ê°ìŽ ì íí 결곌륌 ìì±íë ë¹ì§ë ¬ ì€ìŒì€
- í¹ì§
- ìží°ëŠ¬ë¹ ë°©ìì ìŽì©íì¬ ì¬ë¬ ížëìì ì ë³í ìííë©Žìë ì íí 결곌륌 ì»ì ì ìì
- ì§ë ¬ ê°ë¥ ì€ìŒì€ì ìŽì©íŽ ížëìì
ì ë³í ìííŽìŒ íì§ë§ ì§ë ¬ ê°ë¥ ì€ìŒì€ìžì§ ì¬ë¶ë¥Œ íëšíë ìŒì ìœì§ ìì
- ì§ë ¬ ê°ë¥ì±ì 볎ì¥íë ë³í ì ìŽ êž°ë²ì ì¬ì©íë ê²ìŽ ìŒë°ì ì
- 3.4 ë³í ì ìŽ êž°ë²
- ë³í ìííë©Žìë ì íí 결곌륌 ì»ì ì ìë ì§ë ¬ ê°ë¥ì±ì 볎ì¥ë°êž° ìí êž°ë²
- Ʞ볞 ì늬
- 몚ë ížëìì ìŽ ë°ë¥Žë©Ž ì§ë ¬ ê°ë¥ì±ìŽ 볎ì¥ëë ëëŠì ê·ìœì ì ìíê³ , ížëìì ë€ìŽ ìŽ ê·ìœì ë°ë¥Žëë¡ íë ê²
ë¡í¹(locking) êž°ë²
- í ížëìì
ìŽ ëšŒì ì ê·Œí ë°ìŽí°ì ëí ì°ì°ì 몚ë ë§ì¹ ëê¹ì§, íŽë¹ ë°ìŽí°ì ë€ë¥ž ížëìì
ìŽ ì ê·Œíì§ ëª»íëë¡
ìíž ë°°ì (mutual exclusion)
íì¬ ì§ë ¬ ê°ë¥ì±ì 볎ì¥íë ê² - ë³í ìíëë ížëìì
ë€ìŽ ê°ì ë°ìŽí°ì ëìì ì ê·Œíì§ ëª»íëë¡
lock
곌unlock
ì°ì°ì ìŽì©íŽ ì ìŽlock
: ížëìì ìŽ ì¬ì©í ë°ìŽí°ì ëí ë ì ê¶ì ê°ì§êž° ìíŽ ì¬ì©unlock
: ížëìì ìŽ ë°ìŽí°ì ëí ë ì ê¶ì ë°ë©íêž° ìíŽ ì¬ì©
- Ʞ볞 ë¡í¹ ê·ìœ
- ë°ìŽí°ì ì ê·Œíë ì°ì°ì ì€ííë €ë©Ž 뚌ì íŽë¹ ë°ìŽí°ì
lock
ì°ì°ì ì€ííì¬ ë ì ê¶ì íëíŽìŒ íšread
ëëwrite
ì°ì°ì ì€ííêž° ì ì ë°ëìlock
ì°ì° ì€í
- ë€ë¥ž ížëìì
ìŽ ìŽë¯ž
lock
ì°ì°ì ì€íí ë°ìŽí°ìë ë€ìlock
ì°ì°ìŽ ì€íë ì ìì - ë
ì ê¶ì íëí ë°ìŽí°ì ëí 몚ë ì°ì°ì ìííê³ ëë©Ž
unlock
ì°ì°ì ì€ííŽì ë ì ê¶ì ë°ë©íŽìŒ íš
- ë°ìŽí°ì ì ê·Œíë ì°ì°ì ì€ííë €ë©Ž 뚌ì íŽë¹ ë°ìŽí°ì
- ë¡í¹ ëšì
lock
ì°ì°ì ì€ííë ëì ë°ìŽí°ì í¬êž°- ì 첎 ë°ìŽí°ë² ìŽì€ë¶í° ìê²ë ë°ìŽí°ë² ìŽì€ë¥Œ 구ì±íë ìì±, 늎ë ìŽì ìŽë ííê¹ì§ë ê°ë¥íš
- ë¡í¹ ëšìê° ì»€ì§ìë¡ ë³íì±ì ë®ìì§ì§ë§ ì ìŽê° ì¬ì
- ë¡í¹ ëšìê° ììì§ìë¡ ì ìŽê° ìŽë µì§ë§ ë³íì±ì ëìì§
- Ʞ볞 ë¡í¹ ê·ìœì íšìšì±ì ëìŽêž° ìí ë°©ë² : ê°ì ë°ìŽí°ì ížëìì
ë€ìŽ ëìì
read
ì°ì°ì ì€ííë ê²ì íì©lock
ì°ì°ì ë ê°ì§ ì¢ ë¥ê³µì©(shared) lock
: ë°ìŽí°ì ëí ì¬ì©ê¶ì ì¬ë¬ ížëìì ìŽ íšê» ê°ì§ ì ìì- ížëìì
ìŽ ë°ìŽí°ì ëíŽ
ê³µì© lock
ì°ì°ì ì€ííë©Ž, íŽë¹ ë°ìŽí°ìread
ì°ì°ì ì€íí ì ìì§ë§write
ì°ì°ì ì€í ë¶ê° - íŽë¹ ë°ìŽí°ì ë€ë¥ž ížëìì
ë
ê³µì© lock
ì°ì°ì ëìì ì€í ê°ë¥
- ížëìì
ìŽ ë°ìŽí°ì ëíŽ
ì ì©(exclusive) lock
:ì ì© lock
ì°ì°ì ì€íí ížëìì ë§ íŽë¹ ë°ìŽí°ì ëí ë ì ê¶ì ê°ì§ ì ìì- ížëìì
ìŽ ë°ìŽí°ì
ì ì© lock
ì°ì°ì ì€ííë©Ž íŽë¹ ë°ìŽí°ìread
ì°ì°ê³Œwrite
ì°ì°ì 몚ë ì€í ê°ë¥ - íŽë¹ ë°ìŽí°ì ë€ë¥ž ížëìì
ì ê³µì©ìŽë ì ì©ìŽë ìŽë€
lock
ì°ì°ë ì€í ë¶ê°
- ížëìì
ìŽ ë°ìŽí°ì
lock
ì°ì°ì ì늜ì±- ìë¡ ë€ë¥ž ížëìì
ìŽ ê°ì ë°ìŽí°ì
ê³µì© lock
ì°ì°ì ëìì ì€í ê°ë¥ - ë€ë¥ž ížëìì
ìŽ
ì ì© lock
ì°ì°ì ì€íí ë°ìŽí°ìëê³µì© lock
,ì ì© lock
몚ë ì€í ë¶ê°
- ìë¡ ë€ë¥ž ížëìì
ìŽ ê°ì ë°ìŽí°ì
- í ížëìì
ìŽ ëšŒì ì ê·Œí ë°ìŽí°ì ëí ì°ì°ì 몚ë ë§ì¹ ëê¹ì§, íŽë¹ ë°ìŽí°ì ë€ë¥ž ížëìì
ìŽ ì ê·Œíì§ ëª»íëë¡
2ëšê³ ë¡í¹ ê·ìœ(2PLP; 2 Phase Locking Protocol)
- Ʞ볞 ë¡í¹ ê·ìœì 묞ì 륌 íŽê²°íê³ ížëìì
ì ì§ë ¬ ê°ë¥ì±ì 볎ì¥íêž° ìíŽ
lock
곌unlock
ì°ì°ì ìí ìì ì ëí ìë¡ìŽ ê·ìœì ì¶ê°í ê² - ë°©ë²
- ížëìì
ìŽ
lock
곌unlock
ì°ì°ì íì¥ ëšê³ì ì¶ì ëšê³ë¡ ëëìŽ ì€ííì¥ ëšê³
: ížëìì ìŽlock
ì°ì°ë§ ì€íí ì ìê³ ,unlock
ì°ì°ì ì€íí ì ìë ëšê³ì¶ì ëšê³
: ížëìì ìŽunlock
ì°ì°ë§ ì€íí ì ìê³ ,lock
ì°ì°ì ì€íí ì ìë ëšê³
- ížëìì
ìŽ ì²ì ìíëë©Ž íì¥ ëšê³ë¡ ë€ìŽê°
lock
ì°ì°ë§ ì€í ê°ë¥ unlock
ì°ì°ì ì€ííë©Ž ì¶ì ëšê³ë¡ ë€ìŽê°unlock
ì°ì°ë§ ì€í ê°ë¥- ížëìì
ì 첫 ë²ì§ž
unlock
ì°ì° ì€í ì ì íìí 몚ëlock
ì°ì°ì ì€ííŽìŒ íš
- ížëìì
ìŽ
- 2ëšê³ ë¡í¹ ê·ìœì ì ì©íë©Ž ížëìì
ì€ìŒì€ì ì§ë ¬ ê°ë¥ì±ì 볎ì¥í ì ìì§ë§
êµì°© ìí(deadlock)
ê° ë°ìí ì ììêµì°© ìí(deadlock)
- ížëìì
ë€ìŽ ìëê° ë
ì íê³ ìë ë°ìŽí°ì
unlock
ì°ì°ìŽ ì€íëꞰ륌 ìë¡ êž°ë€ëŠ¬ë©Žì ìíì ì€ëšíê³ ìë ìí - êµì°© ìíê° ë°ìíì§ ìëë¡ ìë°©íê±°ë, ë°ì ì 빚늬 íì§íì¬ íìí ì¡°ì¹ë¥Œ ì·šíŽìŒ íš
- ížëìì
ë€ìŽ ìëê° ë
ì íê³ ìë ë°ìŽí°ì
- Ʞ볞 ë¡í¹ ê·ìœì 묞ì 륌 íŽê²°íê³ ížëìì
ì ì§ë ¬ ê°ë¥ì±ì 볎ì¥íêž° ìíŽ
728x90
ë°ìí
'Development Study' 칎í ê³ ëŠ¬ì ë€ë¥ž êž
[Lecture] DataBase - Day 11 (0) | 2023.06.12 |
---|---|
[Lecture] Data Communication - Finals Summary (0) | 2023.06.11 |
[Lecture] Data Communication - Day 12 (0) | 2023.06.01 |
[Lecture] Data Communication - Day 11 (0) | 2023.06.01 |
[Lecture] Data Communication - Day 9~10 (0) | 2023.05.28 |
Comments