Isolation Level, κ³ λ¦½ μμ€μ λν΄μ μ΄ν΄νκΈ° μν΄μλ Transaction, νΈλμμ μ λν μ΄ν΄κ° νμνλ€.
λ§μ½ νΈλμμ μ λν΄μ νμ€νκ² μ΄ν΄λ₯Ό νμ§ λͺ» νλ€λ©΄, νμΈνκ³ μ€λ κ²μ μΆμ²νλ€!
Isolation Level, κ³ λ¦½ μμ€
Isolation Level, κ³ λ¦½ μμ€μ νΈλμμ λ€ λΌλ¦¬ μΌκ΄λ λ°μ΄ν°λ₯Ό μΌλ§λ νμ©ν κ²μΈμ§λ₯Ό μ νλ μμ€μ΄λ€.
κ³ λ¦½ μμ€μλ μ΄ 4κ°μ§μ μμ€, 3λ¨κ³κ° μ‘΄μ¬νλ€ (0λ¨κ³ λΆν° μμ)
- Level 0 Read Uncommitted
- Level 1 Read Committed
- Level 2 Repeatable Read
- Level 3 Serializable
μ΄λ° κ³ λ¦½ μμ€μλ λλ¦μ νΉμ§μ΄ μλ€.
μ΄μ κ°κ°μ μμ€μ λ°λΌμ μμ보μ.
Isolation Level, κ³ λ¦½ λ 벨
Level 0. Read Uncommitted
Read Uncommittedλ Uncommitted λ κ²°κ³Όλ₯Ό νμΈν μ μλ€.
κ·Έλ κ² λλ©΄ λ°μ΄ν°λ² μ΄μ€ κ²°κ³Όμ μΌκ΄μ±μ μ μ§νκΈ° νλ€λ€λ λ¨μ μ΄ μ‘΄μ¬νμ§λ§ λμ λμμ±μ ν₯μλλ€.
transaction 1 μ΄ μν μ€μ transaction 2 κ° κ°μ λ³κ²½ν μ μλλ°, transaction1 μ λ³κ²½λκΈ° μ μ κ°μ μ½κΈ° λλ¬Έμ μ΅λν μ¬μ©νμ§ μμμΌ νλ€. μ΄λ₯Ό Dirty Read λΌκ³ νλ€.
λ°μλ μ μλ μ΄μ νμ
- Dirty Read : Uncommitted κ²°κ³Όλ₯Ό νμΈνλ κ²½μ°
- Non Repeatable Read : λμΌν 쿼리λ₯Ό 2λ² μ€νν λ λ€λ₯Έ νΈλμμ μ΄ μμ /μμ νλ κ²½μ°
- Phantom Read : λμΌν 쿼리λ₯Ό 2λ² μ€νν λ λ€λ₯Έ νΈλμμ μ΄ μ λ°μ΄νΈνλ κ²½μ°
Level 1. Read Committed
Read Committedλ νΈλμμ μ΄ μμ νλ μμ μ Lockμ 건λ€.
μ΄ Lock μ κ±°λ 주체λ INSERT λ UPDATE μ κ°μ μ²λ¦¬ μΈμ
μΈλ°, μ΄λ κ² νλ©΄ 쿼리νλ μΈμ
(SELECT) μ INSERTλ UPDATEκ° λκΈ° κΉμ§ κΈ°λ€λ¦¬κΈ° λλ¬Έμ Dirty Read λ₯Ό νΌν μ μλ€.
λλΆλΆμ DBMS μ κΈ°λ³Έμ μΈ Isolation Levelμ΄λ€. MySql μ ν΄λΉλμ§ μλλ€.
- Lock μ κ±°λ 주체 : μ²λ¦¬νλ μΈμ (INSERT, UPDATE)
- 쿼리νλ μΈμ (SELECT) μ΄ λκΈ°
λ°μλ μ μλ μ΄μ νμ
- Non Repeatable Read : λμΌν 쿼리λ₯Ό 2λ² μ€νν λ λ€λ₯Έ νΈλμμ μ΄ μμ /μμ νλ κ²½μ°
- Phantom Read : λμΌν 쿼리λ₯Ό 2λ² μ€νν λ λ€λ₯Έ νΈλμμ μ΄ μ λ°μ΄νΈνλ κ²½μ°
Level 2. Repeatable Read
Repeatable Readλ Read Committed μ λ§μ°¬κ°μ§λ‘ νΈλμμ μ΄ μμ νλ μμ μ Lockμ 건λ€.
νμ§λ§ λ€λ₯Έ μ μ Lockμ κ±°λ 주체μ΄λ€.
Repeatable Readλ 쿼리νλ μΈμ
μ΄ λ½μ κ±ΈκΈ° λλ¬Έμ Non Repeatable Read λ₯Ό ννΌν μ μκ² λλ€.
MySql μ Default Isolation Levelμ΄λ€.
- Lock μ κ±°λ 주체 : 쿼리νλ μΈμ (SELECT)
- μ²λ¦¬νλ μΈμ (INSERT, UPDATE)μ΄ λκΈ°
μ΄μ νμ λ°μ κ°λ₯
- Phantom Read : λμΌν 쿼리λ₯Ό 2λ² μ€νν λ λ€λ₯Έ νΈλμμ μ΄ μ λ°μ΄νΈνλ κ²½μ°
Level 3. Serializable
Serializable λ μ΄λ¦ κ·Έλλ‘ μ§λ ¬ν μ λ΅μ΄λ€. λͺ¨λ λμμ΄ μ§λ ¬ν νκ² μλνλ€.
μ΅μμ Isolation Levelμ΄λ€.
λ°μ΄ν°μ μμ μ±μ΄ λ§€μ° μ€μν νΉμν μν©μ΄ μλ μ΄μ κ±°μ μ¬μ©νμ§ μμ
λ°μν μ μλ μ΄μνμ
μλ€.
Isolation Level μ΄ νμ©νλ λ°μ΄ν°λ² μ΄μ€ μ΄μ νμ
Isolation Level | Dirty Read | Non-Repeatable Read | Phantom Read |
Level 0, Read Uncommitted | νμ© | νμ© | νμ© |
Level 1, Read Committed | x | νμ© | νμ© |
Level 2, Repeatable Read | x | x | νμ© |
Level 3, Serializable | x | x | x |
'π¬web application > - Database' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
μ€νμ νμ΄μ§, λ¨κ³λ³λ‘ μ΅μ ννκΈ° (0) | 2023.11.19 |
---|---|
μ€νμ νμ΄μ§μ΄ λλ¦° μ§μ§ μ΄μ (5) | 2023.11.19 |
[λ°μ΄ν°λ² μ΄μ€] Transaction, νΈλμμ μ΄λ? (0) | 2021.04.07 |
[SQLλ¬Έ κΈ°μ΄] DML λ°μ΄ν° μ‘°μμ΄ :: INSERT, UPDATE, DELETE (0) | 2020.07.07 |
[SQLλ¬Έ κΈ°μ΄] DDL λ°μ΄ν° μ μμ΄ :: CREATE, ALTER, DROP, TRUNCATE λ¬Έ (1) | 2020.07.07 |
λκΈ