π 1. κ°λ
νΈλμμ (Transaction)μ λ°μ΄ν°λ² μ΄μ€μμ νλμ λ Όλ¦¬μ κΈ°λ₯μ μννκΈ° μν μμ μ λ¨μλ₯Ό λ§νλ€.
μμ μ λ¨μλ 쿼리 ν μ€μ΄ λ μ λ μκ³ , μ¬λ¬ κ°μ 쿼리λ€μ΄ λ μ λ μλ€.
π 2. νΈλμμ μ°μ°
νΈλμμ μλ 2κ°μ§ μ°μ°μ΄ μλ€.
π 1. 컀λ°(COMMIT)
- 컀λ°μ΄λ λͺ¨λ μμ λ€μ μ μ μ²λ¦¬νκ² λ€κ³ νμ νλ λͺ λ Ήμ΄μ΄λ€.
- νΈλμμ λ¨μλ‘ μνλλ©° λ³κ²½λ λ΄μ©μ΄ λͺ¨λ μꡬμ μΌλ‘ μ μ₯λλ κ²μ λ§νλ€.
- 컀λ°μ μννλ©΄ νλμ νΈλμμ κ³Όμ μ΄ μ’ λ£λλ κ²μ΄λ€.
π 2. λ‘€λ°±(ROLLBACK)
- λ‘€λ°±μ΄λ νΈλμμ μΌλ‘ μΈν νλμ λ¬Άμ μ²λ¦¬κ° μμλκΈ° μ΄μ μ μνλ λ리λ μΌ(μ·¨μ)μ λ§νλ€.
- μ¦, λ§μ§λ§ 컀λ°μ μλ£ν μμ μΌλ‘ λμκ°λ€λ λ§κ³Ό λμΌνλ€.
π 3. νΈλμμ μν
λ€μκ³Ό κ°μ΄ νΈλμμ μ μνλ₯Ό κΈ°μ€μΌλ‘ νΈλμμ μ νλ¦μ μ΄ν΄λ³Ό μ μλ€.
- Active(νμ±)
νΈλμμ μ΄ μ€ν μ€μΈ μν - Partially Committed(λΆλΆ μλ£)
νΈλμμ μ λ§μ§λ§ μ°μ°κΉμ§ μ€ννμ§λ§, COMMIT μ°μ°μ΄ μ€νλκΈ° μ§μ μ μν
μ€κ³λ λλ‘ μμ μ΄ μ±κ³΅λμλ€κ³ νλλΌλ 무쑰건 λ°μνλ κ²μ΄ μλλΌ, μ€κ³μμ μ΅μ’ μΉμΈ(Commit)μ΄ μμ λκΉμ§ μ€μ λ°μ΄ν°λ² μ΄μ€μ μμ λ΄μ©μ λ°μνμ§ μκ³ κΈ°λ€λ¦¬κ³ μλ μν - Committed(μλ£)
νΈλμμ μ΄ μ±κ³΅μ μΌλ‘ μ’ λ£λμ΄ COMMIT μ°μ°μ μ€νν νμ μν - Failed(μ€ν¨)
νΈλμμ μ€νμ μ€λ₯κ° λ°μνμ¬ μ€λ¨λ μν - Aborted(μ² ν)
νΈλμμ μ΄ λΉμ μμ μΌλ‘ μ’ λ£λμ΄ ROLLBACK μ°μ°μ μνν μν
π 4. νΈλμμ νΉμ§ (ACID)
νΈλμμ μ νΉμ§μΌλ‘ μμμ±(Atomicity), μΌκ΄μ±(Consistency), λ 립μ±(Isolation), μ§μμ±(Durability)μ΄ μλ€. κ° νΉμ§μ μ κΈμλ₯Ό λ°μ ACID νΉμ§μ΄λΌκ³ λΆλ₯Έλ€.
π 1. μμμ± (Atomicity)
- All or Nothing
- μμμ±μ νΈλμμ μ΄ λ°μ΄ν°λ² μ΄μ€μ λͺ¨λ λ°μλκ±°λ, μλλ©΄ μ ν λ°μλμ§ μμμΌ νλ€λ κ²μ΄λ€.
- νΈλμμ λ΄μ λͺ¨λ λͺ λ Ήμ λ°λμ μλ²½ν μνλμ΄μΌ νλ©°, λͺ¨λκ° μλ²½ν μνλμ§ μκ³ μ΄λ νλλΌλ μ€λ₯κ° λ°μνλ©΄ νΈλμμ μ λΆκ° μ·¨μλμ΄μΌ νλ€λ κ²μ΄λ€.
π 2. μΌκ΄μ± (Consistency)
- μΌκ΄μ±μ νΈλμμ μ μμ μ²λ¦¬ κ²°κ³Όκ° νμ μΌκ΄μ±μ΄ μμ΄μΌ νλ€λ κ²μ΄λ€.
- νΈλμμ μ΄ μ§νλλ λμμ λ°μ΄ν°λ² μ΄μ€κ° λ³κ²½λλλΌλ μ λ°μ΄νΈλ λ°μ΄ν°λ² μ΄μ€λ‘ νΈλμμ μ΄ μ§νλλ κ²μ΄ μλλΌ, μ²μμ νΈλμμ μ μ§ννκΈ° μν΄ μ°Έμ‘°ν λ°μ΄ν°λ² μ΄μ€λ‘ μ§νλλ€λ κ²μ΄λ€.
- μ¦, νΈλμμ μ΄ μ§νλλ λμ λ°μ΄ν°λ² μ΄μ€κ° λ³κ²½λλλΌλ μ΄μ μ μ¬μ©ν λ°μ΄ν°λ² μ΄μ€λ₯Ό μ°Έμ‘°νλ€.
- νΈλμμ μ μμλΆν° μ’ λ£ μκΉμ§ κ°μ ννμ λ°μ΄ν°λ² μ΄μ€λ₯Ό μ°Έμ‘°νλ€.
π 3. λ λ¦½μ± (Isolation, 격리μ±)
- λ 립μ±(=격리μ±)μ νΈλμμ μν μ μλ‘ λΌμ΄λ€μ§ λͺ»νλ κ²μ λ§νλ€.
- νλμ νΉμ νΈλμμ μ΄ μλ£λ λκΉμ§, λ€λ₯Έ νΈλμμ μ΄ νΉμ νΈλμμ μ κ²°κ³Όλ₯Ό μ°Έμ‘°ν μ μλ€.
- 볡μμ λ³λ ¬ νΈλμμ μ μλ‘ κ²©λ¦¬λμ΄ λ§μΉ μμ°¨μ μΌλ‘ μ€νλλ κ²μ²λΌ μλλμ΄μΌ νκ³ , λ°μ΄ν°λ² μ΄μ€λ μ¬λ¬ μ¬μ©μκ° κ°μ λ°μ΄ν°μ μ κ·Όν μ μμ΄μΌ νλ€.
- κ·Έλ₯ μμ°¨μ μΌλ‘ νλ©΄ μ½κ² λκ² μ§λ§ κ·Έλ κ² νλ©΄ μ±λ₯μ΄ λλΉ μ§λ€. κ·Έλμ 격리μ±μ μ¬λ¬ κ°μ 격리 μμ€μΌλ‘ λλμ΄ κ²©λ¦¬μ±μ 보μ₯νλ€
SERIALIZABLE (μ§λ ¬ν κ°λ₯)
REPEATABLE READ (λ°λ³΅ κ°λ₯ν μ½κΈ°)
READ COMMITTED (컀λ°λ μ½κΈ°)
READ UNCOMMITTED (컀λ°λμ§ μμ μ½κΈ°)
π 4. μ§μμ± (Durability)
- μ§μμ±μ μ±κ³΅μ μΌλ‘ μνλ νΈλμμ μ μμν λ°μλμ΄μΌ νλ κ²μ λ§νλ€.
ν΄λΉ κΈμ
μ½λ©ν©ν 리μ '[DBκΈ°μ΄] νΈλμμ μ΄λ 무μμΈκ°?',
κ°λ°μλ‘ νλ‘ μκΈ° λμ 'νΈλμμ (Transaction)μ΄λ?',
Inpa λμ '[MYSQL] νΈλμμ (Transaction) κ°λ & μ¬μ© μλ²½ μ 리',
μ£Όνμ² λμ 'λ©΄μ μ μν CS μ 곡μ§μ λ ΈνΈ'
λ₯Ό μ°Έκ³ νμμ΅λλ€.
'π λ°μ΄ν°λ² μ΄μ€ > κ°λ ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
MySQLμ μ 체 ꡬ쑰 & 쿼리 μ€ν ꡬ쑰 (0) | 2023.06.18 |
---|---|
νΈλμμ μ 격리 μμ€ (Transaction Isolation Level) (1) | 2023.06.18 |
[DB] λ°μ΄ν°λ² μ΄μ€ ν€(Key) κ°λ & ν€(Key) μ’ λ₯ (0) | 2023.06.13 |
μλΈμΏΌλ¦¬(Subquery) (0) | 2023.04.18 |
μ‘°μΈ(JOIN) (0) | 2023.04.18 |