π [Theory] π» Transaction isolation level νΈλμμ 격리 μμ€
π» Transaction isolation level
μλ
νμΈμ. π
μ€λμ νΈλμμ
격리μμ€ ( Transaction isolation level ) μ λν΄
μμλ³΄λ €κ³ ν©λλ€.
What is Transaction isolation level? (νΈλμμ 격리 μμ€μ΄λ?)
νΈλμμ
격리 μμ€μ΄λ μ¬λ¬ νΈλμμ
μ΄ λμμ μνμ΄ λ λ
νΉμ νΈλμμ
μ΄ λ€λ₯Έ νΈλμμ
μμ λ³κ²½νκ±°λ μ‘°νν λ°μ΄ν°λ₯Ό
λ³Ό μ μλλ‘ νμ© μ¬λΆλ₯Ό κ²°μ νλ κ²μ
λλ€.
νΈλμμ 격리 μμ€μ νμμ±?
- νΈλμμ μ ACID νΉμ±μ κ°μ§
- νΈλμμ μ΄ μμμ μ΄λ©΄μλ λ 립μ μΈ μνμ ν΄μΌν¨
- νΈλμμ μ΄ μνλλ λμ λ€λ₯Έ νΈλμμ μ΄ κ΄μ¬νμ§ λͺ»νκ² λ§λ Locking μ΄ λ±μ₯ν¨
- 무쑰건μ μΈ Lockingμ λμμ λ§μ νΈλμμ μ μ²λ¦¬ν λ DB μ±λ₯μ΄ λ¨μ΄μ§
- ν¨μΈμ μΈ Locking λ°©λ²μ΄ νμν¨
νΈλμμ 격리 μμ€μ μ’ λ₯
level 0 - READ UNCOMMITTED
νΈλμμ
Aκ° νΉμ μ»¬λΌ λ°μ΄ν°λ₯Ό λ³κ²½νκ³ μλ μ€μ (COMMITμ μμ§ λμ§ μμ)
νΈλμμ
Bκ° readνλ©΄ νΈλμμ
Aκ° λ³κ²½νκΈ° μ λ°μ΄ν°λ₯Ό μ½μ΄μ¨λ€.
λ§μ½ νΈλμμ
Aκ° λ°μ΄ν° λ³κ²½ ν 컀λ°νκ² λλ©΄ νΈλμμ
Bλ λ³κ²½λ λ°μ΄ν°λ₯Ό μ½μ΄μ¨λ€.
λ¬Έμ μ
-
dirty read λ°μ
νΈλμμ μ΄ μμ μ΄ μλ£λμ§ μμλλ°λ λ€λ₯Έ νΈλμμ μμ λ³Ό μ μκ² λλ νμ λ³κ²½λκ³ μλ λ°μ΄ν°λ₯Ό μ½μλλ° νΈλμμ μ λ¬Έμ κ° μ겨 ROLLBACK μ΄ λλ€λ©΄ λ³κ²½ μ λ°μ΄ν°λ‘ λμκ°κ² λ¨.
μ΄λ λ³κ²½λκ³ μλ λ°μ΄ν°λ₯Ό μ½μ κ²κ³Ό ROLLBACKμΌλ‘ μΈν΄ λ³κ²½ μ λ°μ΄ν°λ‘ λμκ° κ²μ΄ λΆμΌμΉν¨.
level 1 - READ COMMITTED
νΈλμμ
Aκ° νΉμ μ»¬λΌ λ°μ΄ν°λ₯Ό λ³κ²½νκ³ μλ μ€μ(COMMIT μ )
νΈλμμ
Bκ° readνλ©΄ νΈλμμ
Aκ° λ³κ²½νκΈ° μ λ°μ΄ν°(μ΄μ COMMIT)λ₯Ό μ½μ΄μ¨λ€.
λ§μ½ νΈλμμ
Aκ° λ°μ΄ν° λ³κ²½ ν 컀λ°νκ² λλ©΄ νΈλμμ
Bλ λ³κ²½λ λ°μ΄ν°λ₯Ό μ½μ΄μ¨λ€.
λ¬Έμ μ
-
Non-repeatable Read λ°μ
νΈλμμ μμ ν, λ°λ³΅μ μΈ μ‘°νμμ μμ λ€λ₯Έ νΈλμμ μμ λ°μ΄ν°κ° λ³κ²½λλ κ²½μ°, μ‘°ν μ λ°μ΄ν°κ° μΌμΉνμ§ μλ λ¬Έμ κ° λ°μνλ νμμ λ§ν¨.
λκ°μ λ°μ΄ν°λ₯Ό λ€μ μ‘°ννμλ μΌμΉνμ§κ° μμμ μμ.
level 2 - REPEATABLE READ
νΈλμμ
λ΄μμ λ€λ₯Έ νΈλμμ
μ΄ λ°μ΄ν°λ₯Ό λ³κ²½ λ° μ»€λ°νλλΌλ,
νΈλμμ
μμ μμ μ λ°μ΄ν°λ₯Ό 보μ¬μ£Όλ νΈλμ μ
λ 벨μ
λλ€.
λ¬Έμ μ
-
Phantom Read λ°μ
Unrepeatable Read μμλ λ°μ΄ν°μ λ³κ²½, μμ , μΆκ° μμ μ΄ κ°λ₯. λ°λ©΄ Phantom Read λ λ°μ΄ν° μΆκ°λ§ κ°λ₯νλ€.
μΆκ°κ° κ°λ₯νκΈ° λλ¬Έμ, νΈλμμ μμ ν, λ°λ³΅μ μΈ μ‘°νμμ μμ λ€λ₯Έ νΈλμμ μμ λ°μ΄ν°κ° μΆκ°λλ κ²½μ°, μ‘°ν μ λ°μ΄ν°κ° μΌμΉνμ§ μλ λ¬Έμ κ° λ°μνλ ν νμμ λ§ν¨.
ν νΈλμμ λ΄μμ κ°μ 쿼리λ₯Ό λ λ² μννλλ°, 첫 λ²μ§Έ 쿼리μμ μλ μ λ Ή(Phantom) λ μ½λκ° λ λ²μ§Έ 쿼리μμ λνλλ νμμ λ§ν¨.
level 3 - SELIALIZABLE
κ°μ₯ λμ isolation level μ΄λ€.
νΈλμμ
μ΄ μλ£λ λκΉμ§ SELECT λ¬Έμ₯μ΄ μ¬μ©νλ λͺ¨λ λ°μ΄ν°μ Shared Lockμ΄ κ±Έλ¦¬λ―λ‘
λ€λ₯Έ μ¬μ©μλ ν΄λΉ λ°μ΄ν°μ λ³κ²½, μμ , μΆκ° μμ
λͺ¨λ νμ§ λͺ»ν¨.
μλ²½ν μΌκ΄μ± μ 곡!
λ¬Έμ μ
- Lockμ΄ μ μ νκ³ μμ΄μ DBμ μ±λ₯μ΄ μ νλλ€.
λ
νΈλμμ
μ 격리 μμ€κ³Ό
ν΄λΉ 격리 μμ€λ§λ€μ
λ¬Έμ μ μ μμ보μμ΅λλ€.
κ°μ¬ν©λλ€. π
Reference
https://lng1982.tistory.com/287
http://www.dbguide.net/db.db?cmd=view&boardUid=148216&boardConfigUid=9&boardIdx=138&boardStep=1