λ°μ΄ν°λ² μ΄μ€(DataBase) ν볡(Recovery)
νΈλμμ λ€μ μννλ λμ€ μ₯μ λ‘ μΈν΄ μμλ λ°μ΄ν°λ² μ΄μ€λ₯Ό μμλκΈ° μ΄μ μ μ μμ μΈ μνλ‘ λ³΅κ΅¬μν€λ μμ μ λ§ν©λλ€.
* νΈλμμ (Transaction)
λ°μ΄ν°λ² μ΄μ€μ μνλ₯Ό λ³νμν€κΈ° ν΄μ μννλ μμ μ λ¨μλ₯Ό λ»νλ€.
μ₯μ μ μμΈμΌλ‘λ λμ€ν¬ λΆκ΄΄, μ μ κ³ μ₯μΌλ‘ μΈν νλμ¨μ΄ κ²°ν¨, μννΈμ¨μ΄μ λ Όλ¦¬ μ€λ₯λ‘ μΈν μννΈμ¨μ΄ κ²°ν¨, μ¬λμ μ€μ(ν΄λ¨Ό μλ¬) λ± μ¬λ¬κ°μ§κ° μμ΅λλ€.
μ΄μ κ°μ μμΈμΌλ‘ λ°μλλ μ₯μ λ λ€μκ³Ό κ°μ΄ ν¬κ² 3κ°μ§ μ νμΌλ‘ ꡬλΆν μ μμΌλ©° μ΄λ¬ν μ₯μ μ λν΄ ν볡μ μν΄ DBMSλ ν볡κ΄λ¦¬μ(recovery manager)λ₯Ό λκ³ λλΉνκ³ μμ΅λλ€.
νΈλμμ μ₯μ | νΈλμμ λ΄μ λ Όλ¦¬μ μ€λ₯λ λ΄λΆ 쑰건 μ¦, μ λ ₯ λ°μ΄ν°μ λΆλ, λ°μ΄ν°μ λΆλͺ , μμ€ν μμμ κ³Όλ€ μ¬μ© μꡬ λ±μΌλ‘ μ μμ μΈ μ€νμ κ³μν μ μλ μν |
μμ€ν μ₯μ | νλμ¨μ΄μ μ€λμμΌλ‘ λ©μΈ λ©λͺ¨λ¦¬μ μλ μ 보μ μμ€μ΄λ κ΅μ°© μνκ° λ°μνμ¬ λ μ΄μ μ€νμ κ³μν μ μλ μν |
λ―Έλμ΄ μ₯μ | λμ€ν¬ ν€λ λΆκ΄΄λ κ³ μ₯μΌλ‘ μΈν΄ μ μ₯μ₯μΉμ λ°μ΄ν°λ² μ΄μ€ μΌλΆ λλ μ λΆκ° μμλ μν |
λ°μ΄ν°λ² μ΄μ€ ν볡μ κΈ°λ³Έ μ리λ λ°μ΄ν° μ€λ³΅μ μμ΅λλ€.
μ¦, λ°μ΄ν°λ² μ΄μ€μ ν¬ν¨λ μ 보λ₯Ό μμ€ν μ μ΄λκ°μ λ³λλ‘ μ€λ³΅ν΄μ μ μ₯ν΄ λμλ€κ° μ₯μ μ μ΄λ₯Ό λ€μ 볡μνλ κ²μ λλ€.
λ°μ΄ν° μ€λ³΅ κΈ°λ²
μ΄ μ€λ³΅ κΈ°λ²μλ λ₯ν(dump)μ λ‘κ·Έ(log)κ° μμ΅λλ€.
λ€ν(dump) | λ€νλ μ£ΌκΈ°μ μΌλ‘ λ°μ΄ν°λ² μ΄μ€ μ 체λ₯Ό λ€λ₯Έ μ μ₯ μ₯μΉμ 볡μ νλ κ² |
λ‘κ·Έ(log) | λ‘κ·Έλ λ°μ΄ν°λ² μ΄μ€κ° λ³κ²½λ λλ§λ€ λ³κ²½λλ λ°μ΄ν°μ λ³κ²½ μ /νμ κ°μ λ³λμ νμΌμ κΈ°λ‘ν΄λλ κ² |
Redo, Undo
μ₯μ κ° λ°μνμ λ ν볡μ μν΄ μ·¨ν μ μλ μ‘°μΉλ μΌλ°μ μΌλ‘ λ€μκ³Ό κ°μ΄ λκ°μ§ μ νμ΄ μμ΅λλ€.
Redo: μ¬μ€ν
μμμ± λ³΄μ₯, λ°μ΄ν°λ² μ΄μ€ λ΄μ© μμ²΄κ° μμμ΄ λ κ²½μ° κ°μ₯ μ΅κ·Όμ 볡μ λ³Έμ μ μ¬μν¨ λ€ μ΄ λ³΅μ λ³Έ μ΄νμ μΌμ΄λ λ³κ²½λ§μ λ‘κ·Έλ₯Ό μ΄μ©νμ¬ μ¬μ€νν¨μΌλ‘μ¨ λ°μ΄ν°λ² μ΄μ€λ₯Ό 볡μνλ κ²
* μμμ±(Persistence)
λ°μ΄ν°λ₯Ό μμ±ν νλ‘κ·Έλ¨μ΄ μ’ λ£λλλΌλ λ°μ΄ν°κ° μ¬λΌμ§μ§ μλ νΉμ±μ μλ―Έν©λλ€.
Undo: μ·¨μ
μμμ± λ³΄μ₯, λ°μ΄ν°λ² μ΄μ€ λ΄μ© μ체λ μμλμ§ μμμ§λ§ λ³κ²½ μ€μ΄κ±°λ λ³κ²½λ λ΄μ©μ λν μ λ’°μ±μ μμ΄λ²λ¦° κ²½μ° λ‘κ·Έλ₯Ό μ΄μ©νμ¬ λͺ¨λ λ³κ²½λ€μ μ·¨μμν΄μΌλ‘μ¨ μλμ λ°μ΄ν°λ² μ΄μ€ μνλ‘ λ³΅μνλ κ²
* μμμ±(atomicity)
μμ€ν μμ ν νΈλμμ μ μ°μ°λ€μ΄ λͺ¨λ μ±κ³΅νκ±°λ, λ°λλ‘ μ λΆ μ€ν¨λλ μ±μ§μ μλ―Έν©λ.
λ‘κ·Έλ₯Ό μ΄μ©ν ν볡
λ‘κ·Έλ₯Ό μ΄μ©ν ν볡 κΈ°λ²μ λ°μ΄ν°λ₯Ό λ³κ²½ν μ°μ° κ²°κ³Όλ₯Ό λ°μ΄ν°λ² μ΄μ€μ λ°μνλ μμ μ λ°λΌ λ κ°μ§λ‘ λλ©λλ€.
λ κ°μ§ κ²½μ° λͺ¨λ μ₯μ λ°μμ λλΉνκΈ° μν΄ λ°μ΄ν° λ³κ²½μ λν λ΄μ©μ λ‘κ·Έ νμΌμ κΈ°λ‘νλ©°, νΈλμμ μμ λ°μ΄ν° λ³κ²½ μ°μ°μ΄ μ€νλμμ λ,
λ‘κ·Έ νμΌμ λ‘κ·Έ κΈ°λ‘μ λ¨Όμ κΈ°λ‘ν ν λ°μ΄ν°λ² μ΄μ€μμ λ³κ²½ μ°μ°μ μνν©λλ€.
μμ°κ°±μ ν볡기λ²: Redo μν
νΈλμμ μ΄ μνλλ λμμλ λ°μ΄ν° λ³κ²½ μ°μ°μ κ²°κ³Όλ₯Ό λ°μ΄ν°λ² μ΄μ€μ μ¦μ λ°μνμ§ μκ³ λ‘κ·Έ νμΌμ κΈ°λ‘ν΄λμλ€κ°, νΈλμμ μ΄ λΆλΆ μλ£(commit)λ νμ λ‘κ·Έμ κΈ°λ‘λ λ΄μ©μ μ΄μ©ν΄ λ°μ΄ν°λ² μ΄μ€μ ν λ²μ λ°μν©λλ€.
- νΈλμμ μ»€λ° μλ£κΉμ§ κ°±μ λ΄μ©μ λ‘κ·Έμλ§ μ μ₯νκ³ DBμ μ μ₯νμ§ μκ³ μ§μ°
- μ€κ°μ κ°±μ μ νμ§ μμμμΌλ‘ Undoκ° νμ μκ³ , μμμ± λ³΄μ₯
- Redoλ§ νλ©΄ λ¨
μ¦μκ°±μ ν볡기λ²: Redo, Undo μν
νΈλμμ μν μ€μ λ°μ΄ν°λ₯Ό λ³κ²½ν μ°μ°μ κ²°κ³Όλ₯Ό λ°μ΄ν°λ² μ΄μ€μ μ¦μ λ°μνλ κ²½μ° μ¬μ©ν©λλ€.
- λ°μ΄ν° λ³κ²½ μ λ‘κ·Έμ DBμ μ¦μ κ°±μ
- 컀λ°λκΈ° μ μ μ₯μ κ° λλ©΄ Undo, μ»€λ° νμ μ₯μ κ° λλ©΄ Redo μν
κ²μ¬ μμ (Check point) ν볡 κΈ°λ²
μμΉμ μΌλ‘λ λ‘κ·Έ μ 체λ₯Ό μ‘°μ¬ν΄μΌ λλλ°, μκ°μ΄ λ무 λ§μ΄ 걸립λλ€.
λν Redoλ₯Ό ν νμκ° μλ νΈλμμ μ λ λ€μ Redoν΄μΌνλ λ¬Έμ κ° μκΉλλ€.
μ΄λ¬ν λ¬Έμ μ μ ν΄κ²°νκΈ° μν κΈ°λ²μ΄ κ²μ¬μμ (check point) λ°©λ²μ λλ€.
κ²μ¬ μμ ν볡 κΈ°λ²μ λ‘κ·Έ ν볡 κΈ°λ²κ³Ό κ°μ λ°©λ²μΌλ‘ λ‘κ·Έ κΈ°λ‘μ μ΄μ©νλ, μΌμ μκ° κ°κ²©μΌλ‘ κ²μ¬ μμ (Check point)μ λ§λ€μ΄ λ‘λλ€.
κ·Έλ¦¬κ³ μ₯μ κ° λ°μνλ©΄ κ°μ₯ μ΅κ·Ό κ²μ¬ μμ μ΄μ μ νΈλμμ μλ ν볡 μμ μ μννμ§ μκ³ , μ΄νμ νΈλμμ μλ§ ν볡 μμ μ μνν©λλ€.
μΌμ μκ° κ°κ²©μΌλ‘ κ²μ¬ μμ μ΄ λλ©΄ λ©μΈ λ©λͺ¨λ¦¬μ μλ λͺ¨λ λ‘κ·Έ λ μ½λλ₯Ό μμ μ μ₯ μ₯μΉμ μλ λ‘κ·Έ νμΌμ κΈ°λ‘νκ³ , νΈλμμ μ λ°μ΄ν° λ³κ²½ λ΄μ©μ λ°μ΄ν°λ² μ΄μ€μ λ°μν©λλ€. λ‘κ·Έ νμΌμλ <checkpoint L>νμμ λ‘κ·Έ λ μ½λλ₯Ό κΈ°λ‘ν©λλ€.
λ―Έλμ΄(λμ€ν¬) ν볡 κΈ°λ²
λ―Έλμ΄(λμ€ν¬) ν볡 κΈ°λ²μ μ 체 λ°μ΄ν°λ² μ΄μ€μ λ΄μ©μ μΌμ μ£ΌκΈ°λ§λ€ λ€λ₯Έ μμ ν μ μ₯ μ₯μΉμ 볡μ¬ν΄λλ λ€ν(dump)λ₯Ό μ΄μ©ν©λλ€.
λ―Έλμ΄(λμ€ν¬) μ₯μ κ° λ°μνκ² λλ©΄ κ°μ₯ μ΅κ·Όμ dump μ 보λ₯Ό μ΄μ©ν΄ μ₯μ κ° λ°μμ€λκΈ° μ΄μ μΌλ‘ 볡ꡬν ν, μ΄κ²μ΄ λλλ©΄ λ‘κ·Έλ₯Ό μ΄μ©νμ¬ κ°μ₯ μ΅κ·Όμ μΌκ΄λ μνλ‘ λ°μ΄ν°λ² μ΄μ€λ₯Ό 볡μμν΅λλ€.
μ 체 λ°μ΄ν°λ² μ΄μ€λ₯Ό λ€λ₯Έ μ μ₯ μ₯μΉμ 볡μ¬νλ κ²μ λΉμ©μ΄ λ§μ΄ λ€κ³ 볡μ¬νλ λμμ νΈλμμ μνμ μ€λ¨ν΄μΌ νλ―λ‘ λ―Έλμ΄ ν볡 κΈ°λ²μ CPUκ° λλΉλλ€λ λ¨μ μ΄ μμ΅λλ€.
μ°Έκ³