νΈλμμ (Transaction)μ΄λ?
by rlaehddnd0422νΈλμμ μ΄λ?
νΈλμμ μ΄λ λ°μ΄ν°λ² μ΄μ€μ μνλ₯Ό λ³νμν€λ νλμ λ Όλ¦¬μ κΈ°λ₯μ μννκΈ° μν μμ μ λ¨μ λλ νκΊΌλ²μ λͺ¨λ μνλμ΄μΌ ν μΌλ ¨μ μ°μ°λ€μ μλ―Έν©λλ€.
νΈλμμ μ νΉμ§(ACID)
- Atomicity(μμμ±)
- νΈλμμ μ μ°μ°μ λ°μ΄ν°λ² μ΄μ€μ λͺ¨λ λ°μλκ±°λ or μ ν λ°μλμ§ μμμΌ ν©λλ€.
- νΈλμμ λ΄μ λͺ¨λ λͺ λ Ήμ λ°λμ μλ²½ν μνλμ΄μΌ νλ©΄, λͺ¨λκ° μλ²½ν μνλμ§ μκ³ μ΄λ νλλΌλ μ€λ₯κ° λλ©΄ μ λΆ μ·¨μλμ΄μΌ ν©λλ€.
- Consistency(μΌκ΄μ±)
- νΈλμμ μ΄ κ·Έ μ€νμ μ±κ³΅μ μΌλ‘ μλ£νλ©΄ μΈμ λ μΌκ΄μ± μλ λ°μ΄ν°λ² μ΄μ€ μνλ‘ λ³νν©λλ€.
- μμ€ν μ΄ κ°μ§κ³ μλ κ³ μ μμλ νΈλμμ μν μ , νμ μνκ° κ°μμΌ ν©λλ€.
- Durability(μ§μμ±)
- μ±κ³΅μ μΌλ‘ μλ£λ νΈλμμ μ κ²°κ³Όλ μμ€ν μ΄ κ³ μ₯λλλΌλ μꡬμ μΌλ‘ λ°μλμ΄μΌ ν©λλ€.
- Isolation(격리μ±, λ
립μ±)
- λ μ΄μμ νΈλμμ μ΄ λμμ λ³ν μ€νλλ κ²½μ°, μ΄λ νλμ νΈλμμ μ€νμ€ λ€λ₯Έ νΈλμμ μ μ°μ°μ΄ λΌμ΄λ€ μ μμ΅λλ€.
- μνμ€μΈ νΈλμμ μ΄ μμ ν μλ£λ λκΉμ§, λ€λ₯Έ νΈλμμ μμ μν κ²°κ³Όλ₯Ό μ°Έμ‘°(μμ ,μ‘°ν λ±)ν μ μμ΅λλ€.
- νΈλμμ μ Isolationμ 보μ₯νκΈ° μν΄μλ νΈλμμ μ κ±°μ μμλλ‘ μ€νν΄μΌ νλλ° μμλλ‘ μ€ννκ²λλ©΄ μ±λ₯μ΄ λ§€μ° λλΉ μ§λλ€. μ΄λ° λ¬Έμ λ‘ μΈν΄ ANSI νμ€μ λ€μκ³Ό κ°μ΄ νΈλμμ μ 격리μμ€μ 4λ¨κ³λ‘ λλμ΄ μ μνμ΅λλ€.
νΈλμμ 격리μμ€ 4λ¨κ³
1. READ UNCOMMITED(컀λ°λμ§ μμ μ½κΈ°) : μ΄λ€ νΈλμμ μ λ³κ²½λ΄μ©μ΄ Commitμ΄λ Rollbackκ³Ό μκ΄μμ΄ λ€λ₯Έ νΈλμμ μμ 보μ¬μ§λλ€. μ΄ κ²©λ¦¬μμ€μ μλμ κ°μ λ¬Έμ κ° λ°μν μ μμ΅λλ€.
A νΈλμμ μμ μΌλΆ λ°μ΄ν° λ³κ²½ ν 컀λ°νμ§ μμ
-> B νΈλμμ μμ λ°μ΄ν° μ‘°ν μ λ³κ²½λ λ°μ΄ν°λ₯Ό μ‘°νν¨ (μ΄λ₯Ό Dirty Read(λν° λ¦¬λ) λΌκ³ ν©λλ€)
-> A νΈλμμ μμ λ¬Έμ κ° μ겨μ ROLLBACK.
-> B νΈλμμ μ μ¬μ ν λ³κ²½λ λ°μ΄ν°λ₯Ό κΈ°λ°μΌλ‘ λ€μ λ‘μ§μ μννκ² λ¨
2.READ COMMITTED(컀λ°λ μ½κΈ°) : μ΄λ€ νΈλμμ μ λ³κ²½ λ΄μ©μ΄ Commit λμ΄μΌλ§ λ€λ₯Έ νΈλμμ μμ μ‘°νν μ μμ΅λλ€. κ°μ₯ λ§μ΄ μ±νλλ 격리μμ€μ λλ€. μ¬κΈ°μλ NON-REPETABLE READ λΆμ ν© λ¬Έμ κ° λ°μν μ μμ΅λλ€.
B νΈλμμ μμ member_idκ° 1λ²μΈ μ¬λμ λμ΄λ₯Ό μ‘°ν -> 27μ΄λ‘ μ‘°νλ¨.
A νΈλμμ μμ member_idκ° 1λ²μΈ μ¬λμ λμ΄λ₯Ό 28μ΄λ‘ λ³κ²½νκ³ Commit
B νΈλμμ μμ member_idκ° 1λ²μΈ μ¬λμ λμ΄λ₯Ό λ€μ μ‘°ν -> 27μ΄λ‘ μ‘°νλ¨.
μΈλ»λ³΄λ©΄ λ¬Έμ κ° μμ΄ λ³΄μ΄μ§λ§ μ΄λ νλμ νΈλμμ λ΄μμ λκ°μ SELECTλ₯Ό μνν κ²½μ° νμ κ°μ κ²°κ³Όλ₯Ό λ°νν΄μΌ νλ€λ REPEATABLE READ μ ν©μ±μ μ΄κΈλκΈ° λλ¬Έμ μμ μ΄ κΈμ μ μΈ μ²λ¦¬μ μ°κ²°λμ΄ μμΌλ©΄ λ¬Έμ κ° λ°μν μ μμ΅λλ€.
3. REPAEATABLE READ(λ°λ³΅ κ°λ₯ν μ½κΈ°) : νΈλμμ μ΄ μμλκΈ° μ μ 컀λ°λ λ΄μ©μ λν΄μλ§ μ‘°νν μ μλ 격리 μμ€
4. SERIALIZABLE(μ§λ ¬ν κ°λ₯) : κ°μ₯λ¨μνκ³ κ°μ₯ μ격ν 격리μμ€. μ΄ κ²½μ° μ§λ ¬μ μΌλ‘ μνλκΈ° λλ¬Έμ μ°κΈ°μμ λΏλ§ μλλΌ μ½κΈ°μμ μμλ 곡μ μ κΈμ μ€μ νκ² λκΈ° λλ¬Έμ, λμμ²λ¦¬ λ₯λ ₯μ΄ λ§€μ° λ¨μ΄μ§κ³ μ±λ₯μ νκ° λ°μν©λλ€.
1λ²μμ 4λ²μΌλ‘ κ°μλ‘ μ±λ₯μ΄ λ¨μ΄μ§κ³ λ
립μ±μ΄ λμμ§λλ€.
μΌλ°μ μΌλ‘ READ COMMITTED 격리 κΈ°μ€μ μ±νν΄μ μ¬μ©ν©λλ€.
νΈλμμ μ°μ°
- Commit : νλμ λ Όλ¦¬μ λ¨μμ λν μμ μ΄ μ±κ³΅μ μΌλ‘ λλ¬κ³ λ°μ΄ν°λ² μ΄μ€κ° λ€μ μΌκ΄λ μνμ μμ λ, μ΄ νΈλμμ μ΄ νν κ°±μ μ°μ°μ΄ μλ£λ κ²μ νΈλμμ κ΄λ¦¬μμκ² μλ €μ£Όλ μ°μ°μ λλ€.
- Rollback : νλμ νΈλμμ μ²λ¦¬κ° λΉμ μμ μΌλ‘ μ’ λ£λμ΄ λ°μ΄ν°λ² μ΄μ€μ μΌκ΄μ±μ κΉ¨λ¨λ Έμ λ, μ΄ νΈλμμ μ μΌλΆκ° μ μμ μΌλ‘ μ²λ¦¬λλλΌλ, νΈλμμ μ μμμ±μ 보μ₯νκΈ° μν΄ μ΄ νΈλμμ μ΄ νν λͺ¨λ μ°μ°μ μ·¨μνλ μ°μ°μ λλ€. Rollbackμμλ ν΄λΉ νΈλμμ μ μ¬μμ νκ±°λ νκΈ°ν©λλ€.
νΈλμμ μ μν
1. νλ(Active) : νΈλμμ μ΄ μ€νμ€μΈ μν
2. μ€ν¨(Failed) : νΈλμμ μ€νλμ€ μ€λ₯κ° λ°μν΄ μ€λ¨λ μν
3. μ² ν(Aborted) : νΈλμμ μ΄ λΉμ μμ μΌλ‘ μ’ λ£λμ΄ Rollback μ°μ°μ μνν μν
4. λΆλΆ μλ£(Partially Committed) : νΈλμμ μ λ§μ§λ§ μ°μ°κΉμ§ μ€ννμ§λ§, Commit μ°μ°μ΄ μ€νλκΈ° μ§μ μ μν
5. μλ£(Committed) : νΈλμμ μ΄ μ±κ³΅μ μΌλ‘ μ’ λ£λμ΄ Commit μ°μ°μ μ€νν νμ μν
<μ°Έκ³ μλ£>
λΈλ‘κ·Έμ μ 보
Study Repository
rlaehddnd0422