π» [Theory] λ°μ΄ν°λ² μ΄μ€ νΈλμ μ (Transaction)
π» [Theory] λ°μ΄ν°λ² μ΄μ€ νΈλμ μ (Transaction)
μ΄λ²μλ λ°μ΄ν°λ² μ΄μ€μ νΈλμμ
μ λν΄ μμλ³΄κ² μ΅λλ€.
λ°μ΄ν°λ² μ΄μ€ νΈλμ μ (Transaction)λ 무μμΈκ°?
λ°μ΄ν°λ² μ΄μ€μ μνλ₯Ό λ³νμν€λ νλμ λ Όλ¦¬μ κΈ°λ₯μ μννκΈ° μν μμ μ λ¨μ λλ νκΊΌλ²μ λͺ¨λ μνλμ΄μΌ ν μΌλ ¨μ μ°μ°λ€μ μλ―Ένλ€.
β» νκΊΌλ²μ λͺ¨λ μνμ΄ λκ±°λ μλλ©΄ λͺ¨λ μνμ΄ λμ§ μμμΌ νλ€.
νΈλμμ μ μ€λͺ νκΈ° μν΄ μν κ±°λλ₯Ό μμλ‘ λ€ μ μλ€.
ATMμΌλ‘ κ³μ’μ΄μ²΄λ₯Ό νλ€κ³ μκ°ν΄λ³΄λ©΄,
-
A μνμμ μΆκΈνμ¬ B μνμΌλ‘ μ‘κΈνλ €κ³ νλ€.
- μ‘κΈ λμ€, μ μ μλ μ€λ₯κ° λ°μνμ¬ A μν κ³μ’μμ λμ λΉ μ Έ λκ°μ§λ§ B μνμ κ³μ’μ μ
κΈλμ§ μμλ€.
- λμ΄ μ¦λ° => μ¬κ°ν λ¬Έμ
-
μ΄μ κ°μ μν©μ λ§κΈ°μν΄ κ±°λκ° μ±κ³΅μ μΌλ‘ λͺ¨λ λλμΌ μ΄λ₯Ό μμ ν κ±°λλ‘ μΉμΈνκ³ , κ±°λ λμ€ λκ° μ€λ₯κ° λ°μνμ λλ μ΄ κ±°λλ₯Ό μ²μλΆν° μμλ κ±°λλ‘ μμ ν λλ리λ κ²μ΄λ€.
μ΄λ κ² κ±°λμ μμ μ±μ ν보νλ λ°©λ²μ΄ νΈλμμ μ΄λ€. λ°μ΄ν°λ² μ΄μ€μμ ν μ΄λΈμμ λ°μ΄ν°λ₯Ό μ½μ΄ μ¨ ν λ€λ₯Έ ν μ΄λΈμ λ°μ΄ν°λ₯Ό μ λ ₯νκ±°λ κ°±μ , μμ νλλ° μ²λ¦¬ λμ€ μ€λ₯κ° λ°μνλ©΄ λͺ¨λ μμ μ μμνλ‘ λλλ¦°λ€. λ°μ΄ν°λ² μ΄μ€μμ μ²λ¦¬ κ³Όμ μ΄ λͺ¨λ μ μμ μΌλ‘ μ±κ³΅νμ λλ§ μ΅μ’ μ μΌλ‘ λ°μ΄ν°λ² μ΄μ€μ λ°μνλ€. β» νΈλμμ μ νΉμ§μΈ ACIDμ κ΄λ ¨μ΄ λ°μ νλ€.
νΈλμμ (Transaction)μ νΉμ§
μμμ λ§ν κ²μ²λΌ νΈλμμ μ νΉμ§μ ACID 4κ°μ§κ° μλ€.
ACID(Atomicity, Consistency, Isolation, Durability)λ λ°μ΄ν°λ² μ΄μ€ νΈλμ μ μ΄ μμ νκ² μνλλ€λ κ²μ 보μ₯νκΈ° μν νΈλμμ μ νΉμ§μ λ§νλ€.
-
μμμ±(Atomicity) : νΈλμμ μ΄ DBμ λͺ¨λ λ°μλκ±°λ, νΉμ μ ν λ°μλμ§ μμμΌ νλ€.
- νΈλμμ μ μμ μ΄ λΆλΆμ μΌλ‘ μ€νλκ±°λ μ€λ¨λμ§ μλ κ²μ 보μ₯νλ κ²μ λ§νλ€.
- All or Noting μ κ°λ μΌλ‘μ μμ λ¨μλ₯Ό μΌλΆλΆλ§ μ€ννμ§ μλλ€λ κ²μ μλ―Ένλ€.
-
μΌκ΄μ±(Consistency) : νΈλμμ μ μμ μ²λ¦¬ κ²°κ³Όλ νμ μΌκ΄μ±μ΄ μμ΄μΌ νλ€.
- νΈλμμ μ΄ μ±κ³΅μ μΌλ‘ μλ£λ λ μΌκ΄μ μΈ DB μνλ₯Ό μ μ§νλ κ²μ λ§νλ€.
- μ¬κΈ°μ λ§νλ μΌκ΄μ±μ΄λ, μμ μ‘κΈ μμ μμ κΈμ‘μ λ°μ΄ν° νμ
μ΄ μ μν(integer)μΈλ°, κ°μκΈ° λ¬Έμμ΄(string)μ΄ λμ§ μλ κ²μ λ§νλ€.
- μ¦, μ‘κΈ μ ν λͺ¨λ κΈμ‘μ λ°μ΄ν° νμ μ μ μνμ΄μ¬μΌ νλ€λ κ²μ΄ μΌκ΄μ±μ΄λ€.
β» νΈλμμ μμ μΌκ΄μ±μ νΈλμμ μν μ , νμ λ°μ΄ν° λͺ¨λΈμ λͺ¨λ μ μ½ μ‘°κ±΄(κΈ°λ³Έν€, μΈλν€, λλ©μΈ, λλ©μΈ μ μ½μ‘°κ±΄ λ±)μ λ§μ‘±νλ κ²
-
격리μ±(Isolation) : λ μ΄μμ νΈλμμ μ΄ λμμ λ³ν μ€νλκ³ μμ λ, μ΄λ€ νΈλμμ λ λ€λ₯Έ νΈλμμ μ°μ°μ λΌμ΄λ€ μ μλ€.
- νΈλμμ μνμ λ€λ₯Έ νΈλμμ μ μμ μ΄ λΌμ΄λ€μ§ λͺ»νλλ‘ λ³΄μ₯νλ κ²μ λ§νλ€.
- μ¦, νΈλμμ λΌλ¦¬λ μλ‘λ₯Ό κ°μν μ μλ€.
-
μ§μμ±(Durability) : νΈλμμ μ΄ μ±κ³΅μ μΌλ‘ μλ£ λμμΌλ©΄ κ²°κ³Όλ μꡬμ μΌλ‘ λ°μλμ΄μΌ νλ€.
- μ±κ³΅μ μΌλ‘ μνλ νΈλμμ μ μμν λ°μμ΄ λλ κ²μ λ§νλ€.
- commitμ νλ©΄ νμ¬ μνλ μμν 보μ₯λλ€.
νΈλμμ (Transaction)μ μν
νλμ νΈλμμ μ΄ μμ ν λ°μλκ±°λ μλλ©΄ μμ ν μ² νκ° λκΈ° μν΄μ λ€μκ³Ό κ°μ μνλ₯Ό κ°μ§λ€.
- νμ±(Active) : νΈλμμ μ΄ μ μμ μΌλ‘ μ€νμ€μΈ μν
- μ€ν¨(Failed) : νΈλμμ μ€νμ μ€λ₯κ° λ°μνμ¬ μ€λ¨λ μν
- μ² ν(Aborted) : νΈλμμ μ΄ λΉμ μμ μΌλ‘ μ’ λ£λμ΄ Rollback μ°μ°μ μνν μν
- λΆλΆ μλ£(Partially Committed) : νΈλμμ μ λ§μ§λ§ μ°μ°κΉμ§ μ€ννμ§λ§, Commit μ°μ°μ΄ μ€νλκΈ° μ§μ μ μν
- μλ£(Committed) : νΈλμμ μ΄ μ±κ³΅μ μΌλ‘ μ’ λ£λμ΄ Commit μ°μ°μ μ€νν νμ μν
λ
λ°μ΄ν°λ² μ΄μ€μ νΈλμμ
μ λν΄ μμ보μμ΅λλ€.
κ°μ¬ν©λλ€. π
Reference