[CS/DB] Transaction
μ μ
DBμ μνλ₯Ό λ³νμν€κΈ° μν΄μ μννλ μμ μ λ¨μλ₯Ό λ§ν¨
μνλ₯Ό λ³νμν¨λ€λ κ²μ μ§μμ΄λ₯Ό μ¬μ©ν΄μ DBλ₯Ό μ κ·Όνλ κ²μ λ§νλ©°
μμ μ λ¨μλ μ§μμ΄ ν λ¬Έμ₯μ λ§νλ κ²μ΄ μλ λ Όλ¦¬μ μΈ λ¨μλ₯Ό μλ―Έν©λλ€.
νΉμ§
ACID
- μμμ± (Atomicity)
νΈλμμ μ΄ DBμ λͺ¨λ λ°μλλκ°, μλλ©΄ μ ν λ°μλμ§ μμμΌ νλ€.
- μΌκ΄μ± (Consistency)
νΈλμμ μμ μ²λ¦¬ κ²°κ³Όκ° νμ μΌκ΄μ±μ΄ μμ΄μΌ νλ€.
νΈλμμ μ΄ μ§νλλ λμμ DBκ° λ³κ²½λλλΌλ, μ λ°μ΄νΈλ DBλ‘ μ§νλλ κ²μ΄ μλλΌ μ²μμ νΈλμμ μ μ§ννκΈ° μν΄ μ°Έμ‘°ν DBλ‘ μ§νλλ€. λ°λΌμ κ° μ¬μ©μλ μΌκ΄μ± μλ λ°μ΄ν°λ₯Ό λ³Ό μ μλ€.
- λ λ¦½μ± (Isolation)
λ μ΄μμ νΈλμμ μ΄ λμμ μ€νλκ³ μμ κ²½μ°, λ€λ₯Έ νΈλμμ μ μ°μ°μ λΌμ΄λ€ μ μλ€.
λ€λ₯΄κ² νννλ©΄ νλμ νΉμ νΈλμμ μ΄ μλ£λ λ κΉμ§, λ€λ₯Έ νΈλμμ μ΄ μ΄ νΈλμμ μ κ²°κ³Όλ₯Ό μ°Έμ‘°ν μ μλ€λ κ²μ μλ―Έν©λλ€.
- μ§μμ± (Durability)
νΈλμμ μ΄ μ±κ³΅μ μΌλ‘ μλ£λμμ κ²½μ°, κ²°κ³Όλ μꡬμ μΌλ‘ λ°μλμ΄μΌ νλ€
Isolation Level
격리 μμ€ μ΄λ λμμ μ¬λ¬ νΈλμμ μ΄ μ²λ¦¬λ λ, λ€λ₯Έ νΈλμμ μμ λ³κ²½νκ±°λ μ‘°ννλ λ°μ΄ν°λ₯Ό λ³Ό μ μλλ‘ νμ©ν μ§ λ§μ§ κ²°μ νλ κ²μ λ§νλ€.
μμ νΈλμμ μ 4κ°μ§ μμ±μ λ€ μ§ν€λ©΄ SERIALIZABLE μ΄λ©°, μ΄ κ²½μ°μλ λ€μ€ νΈλμμ μ²λ¦¬ λΆκ° νκ² λλ€.
λ°λΌμ λ 립μ±μ μ‘°κΈμ© ν¬κΈ°νλ©΄μ μ±λ₯μ λμ΄κΈ° μν΄ Isolation Levelμ λλμ΄ μ΄μ©νλ€.
μ’ λ₯
- READ UNCOMMITTED
- λ€λ₯Έ νΈλμμ μμ κ°μ μ½μ μ μλ€.
- μ ν©μ±μ λ¬Έμ λ§μ, μ¬μ©νμ§ μλ κ² κΆμ₯ (Dirty Read νμ λ°μ)
- READ COMMITTED
- DBμμ λλΆλΆ κΈ°λ³Έμ μΌλ‘ μ¬μ©λκ³ μλ 격리 μμ€
- commitμ΄ μλ£λ λ°μ΄ν°λ§ selectμμ μ°Έμ‘° κ°λ₯
- νλμ νΈλμμ
μμμ selectλ₯Ό μνν λ λ§λ€ λ°μ΄ν°κ° λμΌνλ€λ 보μ₯ x
- λ€λ₯Έ νΈλμμ μμ ν΄λΉ λ°μ΄ν°λ₯Ό commitνμ κ²½μ°μλ commitμ΄νμ λ°μ΄ν°λ₯Ό λ°νν΄ μ£ΌκΈ° λλ¬Έμ΄λ€.
- Consistente Readλ₯Ό μνν΄μΌ ν¨
- νΈλμμ μμ Readλ₯Ό ν λ, νμ¬μ DBκ°μ΄ μλ νΉμ μμ μ DB μ€λ μ·μ μ½μ΄μ€λ κ²μ λ§ν¨
- Non-repeatable ReadλΌκ³ λ νλ€.
- REPEATABLE READ
- ν νΈλμμ μμ λ°λ³΅ν΄μ SelectνλλΌλ μ½μ΄λ€μ΄λ κ°μ΄ λμΌν¨μ 보μ₯
- νΈλμμ λ΄μμ μ²μμΌλ‘ selectν μνμκ° κΈ°λ‘ν λ€, κ·Έ μ΄νμ selectλ§λ€ κΈ°λ‘ν μμ μ κΈ°μ€μΌλ‘ consistent readλ₯Ό μνν΄μ€.
- SERIALIZABLE
- λ¨μνκ³ μ격ν levelμ΄λ€.
- λͺ¨λ μμ μ λν΄ λ°μ΄ν°λ₯Ό lockνκ³ μ¬μ©νλ€.
- Phantom Read λ°©μ§
- update ν commitνκ³ λ€μ μ‘°ν νμ λ, μμκ³Ό λ€λ₯Έ κ°μ΄ 보μ΄κ±°λ λ°μ΄ν°κ° μ μ€λ κ²½μ°λ₯Ό λ°©μ§ν μ μλ€.
- κ΅μ°©μν(DeadLock)μ λΉ μ§ μ μκΈ° λλ¬Έμ μ μ€νκ² κ³μ°νκ³ μ¬μ©ν΄μΌν¨
- λ¨μνκ³ μ격ν levelμ΄λ€.
Readμμλ REPEATABLE READ
CUD μμλ SERIALIZABLE μ μ¬μ©νλ κ²μ΄ μ μ νλ€.
Commit, Rollback μ°μ°
commit : μ±κ³΅μ μΌλ‘ μλ£λμμ λ λλ¬λ€κ³ μλ €μ£Όλ κ² + μꡬμ μΌλ‘ μ μ₯
rollback : μ€κ°μ μ€ν¨ν΄μ μμμ±μ΄ κΉ¨μ§ κ²½μ°, μ¬μμνκ±°λ νΈλμμ μ΄ μμνκΈ° μ μΌλ‘ μ·¨μμν΄