π[Django] νΈλμμ μ΄λ?
νΈλμμ μ΄λ?
νΈλμμ
μ΄λ, DBμ μνλ₯Ό λ³κ²½μν€λ μμ
μ λ¨μ
λΌκ³ μκ°νλ©΄ λλ€.
μ¦, νκΊΌλ²μ μνλμ΄μΌ ν μ°μ°μ λͺ¨μλμ κ²μ.
μ΄ μ°μ° λ¬Άμμ΄ μ²λ¦¬λμ§ λͺ»νλ©΄ μμνλ‘ λ³΅κ΅¬λλ€λ κ²μ΄ νΉμ§μ΄λ€. (μμ μ μΌλΆλ§ μ μ©λλ νμ λ°©μ§)
μ΄λ° νΉμ§ λλ¬Έμ νΈλμμ
μ μμ
μ μμ μ±
μ 보μ₯ν΄μ€λ€.
νΈλμμ
μ ν¬κ² 4κ°μ§ νΉμ§μ κ°κ³ μλλ°, ACID
λ‘ μ μλ €μ Έμμ.
Atomicity (μμμ±)
νΈλμμ μ΄ DBμ λͺ¨λ λ°μλκ±°λ, νΉμ μ ν λ°μλμ§ μμμΌ ν¨.
Consistenty (μΌκ΄μ±)
νΈλμμ μ μμ μ²λ¦¬ κ²°κ³Όλ νμ μΌκ΄μ± μμ΄μΌ ν¨.
μμ€ν
μ΄ κ°κ³ μλ κ³ μ μμλ νΈλμμ
μν μ κ³Ό μν νμ μνκ° κ°μμΌνλ€λ μλ―Έλ‘, DBμ μ μ½μ‘°κ±΄μ μλ°°νλ μμ
μ νΈλμμ
κ³Όμ μμ μνν μ μμ
μ λνλ.
Isolation (λ 립μ±)
λ μ΄μμ νΈλμμ μ΄ λμμ λ³ν μ€νλκ³ μμ λ, μ΄λ€ νΈλμμ λ λ€λ₯Έ νΈλμμ μ°μ°μ λΌμ΄λ€ μ μμ.
Durability (μ§μμ±)
νΈλμμ μ΄ μ±κ³΅μ μΌλ‘ μλ£λμλ€λ©΄, κ²°κ³Όλ μꡬμ μΌλ‘ λ°μλμ΄μΌ ν¨.
νΈλμμ μ μ°μ°?
νΈλμμ μ μ°μ°μ λ¬Άμμ΄λΌκ³ νλ€.
μ°μ°μλ μ΄λ€ κ²λ€μ΄ μμκΉ?
COMMIT μ°μ°
νΈλμμ
μ΄ μ±κ³΅μ μΌλ‘ μνλμμμ μ μΈνλ μ°μ°
COMMIT
μ°μ°μ μ€νμ ν΅ν΄ νΈλμμ
μ μνμ΄ μ±κ³΅μ μΌλ‘ μλ£λμμμ μ μΈνκ³ , κ·Έ κ²°κ³Όλ₯Ό μ΅μ’
μ μΌλ‘ DBμ λ°μν¨.
ROLLBACK μ°μ°
νΈλμμ
μνμ΄ μ€ν¨νμμ μ μΈνκ³ , μμ
μ μ·¨μνλ μ°μ°
νΈλμμ
μ΄ μνλλ λμ€ μΌλΆ μ°μ°μ΄ μ²λ¦¬λμ§ λͺ»ν μν©μ΄λΌλ©΄, ROLLBACK
μ°μ°μ μ€ννμ¬ νΈλμμ
μνμ΄ μ€ν¨νμμ μ μΈνκ³ , DBλ₯Ό νΈλμμ
μν μ κ³Ό μΌκ΄λ μνλ‘ λλλ €μΌ ν¨.
νΈλμμ μ μν?
νΈλμμ μ μμ μ μ±κ³΅ μ¬λΆμ λ°λΌ ꡬλΆν μ μμ.
Active
νΈλμμ νλ μνλ₯Ό λ§ν¨.
νΈλμμ μ΄ μ€ν μ€μΈ μν.
Partially Committed
νΈλμμ
μ COMMIT
λͺ
λ Ήμ΄ λμ°©ν μν.
νΈλμμ
μ COMMIT
μ΄μ SQLλ¬Έμ΄ μ€νλκ³ , COMMIT
λ§ λ¨μ μνλ₯Ό λ§ν¨.
μ¦, νΈλμμ
μ λ§μ§λ§ μ°μ°κΉμ§ μ€ννκ³ , COMMIT
μ°μ°μ μ€ννκΈ° μ§μ μ μνμ.
Failed
νΈλμμ μ€ν¨ μνλ₯Ό λ§ν¨.
λμ΄μ νΈλμμ μ΄ μ μμ μΌλ‘ μ§νλ μ μλ μνμ.
Committed
νΈλμμ μλ£ μνλ₯Ό λ§ν¨.
νΈλμμ μ΄ μ μμ μΌλ‘ μλ£λ¨.
Partially Committedμ λκ° λ€λ₯΄μ§?
COMMIT
μμ²μ΄ λ€μ΄μ€λ©΄,Partially Committed
μνκ° λ¨. μ΄νCOMMIT
μ λ¬Έμ μμ΄ μνν μ μμΌλ©΄Committed
μνλ‘ μ μ΄λκ³ , μ€λ₯κ° λ°μνλ€λ©΄Failed
μνλ‘ λ¨. μ¦,Partially Committed
λCOMMIT
μμ²μ΄ λ€μ΄μμ λλ₯Ό λ§νλκ±°κ³ ,Committed
λCOMMIT
μ μ μμ μΌλ‘ μλ£ν μνλ₯Ό λ§νλκ±°μ!
Aborted
νΈλμμ μ·¨μ μνλ₯Ό λ§ν¨.
νΈλμμ μ΄ μ·¨μλκ³ , νΈλμμ μ€ν μ΄μ λ°μ΄ν°λ‘ λμκ° μνμ.
μ¦, νΈλμμ
μνμ΄ μ€ν¨νκ³ ROLLBACK
μ°μ°μ΄ μ€νλ μνμΈκ±°μ.
νΈλμμ μ νμ μ¨μΌλλ? μ£Όμν μ
νΈλμμ μ κΌ νμν μ΅μνμ μ½λμλ§ μ¬μ©νλ κ²μ΄ μ’μ. (μ μ¬μ μμ μ¬μ©νμ)
μ¦, νΈλμμ μ λ²μλ₯Ό μ΅μννλΌλ λ§μ!
μΌλ°μ μΌλ‘ DB 컀λ₯μ μ κ°μκ° μ νμ μ.
κ·Έλ°λ° κ° λ¨μ νλ‘κ·Έλ¨μ΄ 컀λ₯μ μ μμ νλ μκ°μ΄ κΈΈμ΄μ§λ©΄, μ¬μ© κ°λ₯ν μ¬μ 컀λ₯μ μ κ°μλ μ€μ΄λ€κ²λκ³ , κ·Έλ¬λ€λ©΄ μ€λ μκ°μ κ° λ¨μ νλ‘κ·Έλ¨μμ 컀λ₯μ μ κ°μ Έκ°κΈ° μν΄ κΈ°λ€λ €μΌνλ μν©μ΄ λ°μν μ μκΈ° λλ¬Έμ.
πΒ [DB] transactionμ μ μ©ν΄μΌλ λμ νμ§ μμμΌν λ?
μ°Έκ³ μλ£
https://velog.io/@shasha/Database-%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98-%EC%A0%95%EB%A6%AC#5-%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98-%EC%82%AC%EC%9A%A9-%EC%8B%9C-%EC%A3%BC%EC%9D%98%ED%95%A0-%EC%A0%90
λκΈλ¨κΈ°κΈ°