DB/RDBMS
Transaction Isolation λ 벨
μ©μν΄
2023. 1. 9. 19:41
728x90
νΈλμμ Isolationμ€λͺ μ νμν μ¬λ¬ μ©μ΄λ₯Ό λ¨Όμ μ 리νμ.
Transaction
- λ°μ΄ν°μ μ ν©μ±μ 보μ₯νκΈ° μν κΈ°λ₯
- db read, writeμμ μ λ Όλ¦¬μ μΌλ‘ λ¬Άλ λ°©μ
- νΈλμμ μΌλ‘ λ¬Άμ μμ μ΄ μ±κ³΅νλ©΄ commit, μ€ν¨ μ rollbackμ νλ―λ‘ λΆλΆμ±κ³΅, λΆλΆ μ€ν¨(Partial Update)μ μνμ΄ μμ
Lock
- λμμ±μ μ μ΄νκΈ° μν κΈ°λ₯
- μ¬λ¬ 컀λ₯μ μμ λμμ λμΌν μμμ μμ²ν κ²½μ° μμλλ‘ νλμ 컀λ₯μ λ§ λ³κ²½ν μ μκ² νλ μν
Isolation level
- λμμ νλ λλ μ¬λ¬ νΈλμμ μ΄ μ§ν λ λ, λ€λ₯Έ νΈλμμ μμ λ³κ²½λ λ°μ΄ν°λ₯Ό μ‘°ννλ κΈ°μ€
- μΌλ°μ μΈ μλΉμ€μμλ Read Commited, Repeatable Readλ₯Ό μ¬μ©
Transaction Isolation
Read Commited
λλΆλΆμ DBMSμμμ κΈ°λ³Έ μ€μ
- 컀λ°λ λ°μ΄ν°λ§ μ½μ
dirty read
κ° λ°μνμ§ μλλ‘ λ³΄μ₯Non-Repeatable Read
λ°μ κ°λ₯
Read Uncommited
- postgresqlμμ μ§μνμ§ μμ
- κ° νΈλμμ μμμ λ³κ²½ λ΄μ©μ΄ Commit, Rollback μ¬λΆ μκ΄μμ΄ λ€λ₯Έ νΈλμμ μ μ‘°νλ¨
dirty read
λ°μ κ°λ₯
Repeatable Read
- Undo μμμ λ°±μ λ λ°μ΄ν°λ₯Ό μ΄μ©ν΄ λμΌ νΈλμμ λ΄μμ κ°μ κ²°κ³Ό 보μ₯
- MySqlμ InnoDB μμ κΈ°λ³ΈμΌλ‘ μ¬μ©λλ 격리 μμ€
- MVCC(Multi Version Concurrency Control)
- InnoDBμ€ν λ¦¬μ§ μμ§μ νΈλμμ μ΄ Rollback κ°λ₯μ±μ λλΉν΄ λ³κ²½ μ λ μ½λλ₯Ό Undo 곡κ°μ λ°±μ ν μ€μ λ μ½λκ° λ³κ²½
- MVCC(Multi Version Concurrency Control)
- Read Commitedλ Undoμμμ λ°±μ λ λ°μ΄ν°λ₯Ό 보μ¬μ£Όμ§λ§, λμ μ°¨μ΄λ λ°±μ λ λ°μ΄ν° μ€ μ΄λ€ μ΄μ λ²μ μ 보μ¬μ£Όλμ§ μ°¨μ΄κ° μλ€.
Serializable
- κ°μ₯ μ격ν 격리 μμ€
- μ½κΈ° μμ λ μ½κΈ° μ κΈμ νλν΄μΌ νλ©°, λμμ λ€λ₯Έ νΈλμμ μ ν΄λΉ λ μ½λ λ³κ²½ λΆκ°
νΈλμμ μμ λ°μ κ°λ₯ν λΆμ ν© νμ
Non-Repeatable Read
- νλμ νΈλμμ λ΄μμ select 쿼리λ₯Ό μ€ννμ λ νμ κ°μ κ²°κ³Όκ° λμ€μ§ μλ νμ
- 격리 μμ€ μ€μ μ λ°λΌμ€λ λΆμ ν© λͺ©λ‘
Dirty Read
- νΈλμμ μμ μ²λ¦¬ν μμ μ΄ μλ£(Commit, Rollback)λμ§ μμμ κ²½μ° λ€λ₯Έ νΈλμμ μμ λ°μ΄ν°λ₯Ό μ½λ νμ
Phantom Read(Phantom Row)
- λ€λ₯Έ νΈλμμ μμ μνν λ³κ²½ μμ μ μν΄ λ μ½λκ° λ³΄μλ€ μ 보μλ€ νλ νμ
- select νλ λ μ½λμ μ°κΈ° μ κΈμ κ±Έμ΄μΌ νμ§λ§, Undoμμ λ μ½λμλ μ κΈμ΄ λΆκ°
728x90
λ°μν