- Union-Find
- λμ νλ‘κ·Έλλ°
- go
- λ€μ΅μ€νΈλΌ
- BFS
- μ¬λΌμ΄λ© μλμ°
- DP
- golang
- DFS
- nestjs
- μΉ΄μΉ΄μ€2021
- μν°λ
- νΈλ¦¬
- μ΄λΆνμ
- ν리μ¨λ³΄λ©
- λΉνΈλ§΅
- LCs
- μμ½λ
- κ°μ₯κ°κΉμ΄κ³΅ν΅μ‘°μ
- λ°±μλ ν리μ¨λ³΄λ©
- Python
- λ°±μ€
- C++
- νλ‘κ·Έλλ¨Έμ€
- js
- μκ³ λ¦¬μ¦
- μ¬κ·
- μΉ΄μΉ΄μ€ μ½ν
- λΉνΈλ§μ€νΉ
- μΉλ¦°μ΄
- Today
- Total
Hello Ocean! πΌ
[CS/DB] Transaction λ³Έλ¬Έ
μ μ
DBμ μνλ₯Ό λ³νμν€κΈ° μν΄μ μννλ μμ μ λ¨μλ₯Ό λ§ν¨
μνλ₯Ό λ³νμν¨λ€λ κ²μ μ§μμ΄λ₯Ό μ¬μ©ν΄μ DBλ₯Ό μ κ·Όνλ κ²μ λ§νλ©°
μμ μ λ¨μλ μ§μμ΄ ν λ¬Έμ₯μ λ§νλ κ²μ΄ μλ λ Όλ¦¬μ μΈ λ¨μλ₯Ό μλ―Έν©λλ€.
νΉμ§
ACID
- μμμ± (Atomicity)
νΈλμμ μ΄ DBμ λͺ¨λ λ°μλλκ°, μλλ©΄ μ ν λ°μλμ§ μμμΌ νλ€.
- μΌκ΄μ± (Consistency)
νΈλμμ μμ μ²λ¦¬ κ²°κ³Όκ° νμ μΌκ΄μ±μ΄ μμ΄μΌ νλ€.
νΈλμμ μ΄ μ§νλλ λμμ DBκ° λ³κ²½λλλΌλ, μ λ°μ΄νΈλ DBλ‘ μ§νλλ κ²μ΄ μλλΌ μ²μμ νΈλμμ μ μ§ννκΈ° μν΄ μ°Έμ‘°ν DBλ‘ μ§νλλ€. λ°λΌμ κ° μ¬μ©μλ μΌκ΄μ± μλ λ°μ΄ν°λ₯Ό λ³Ό μ μλ€.
- λ λ¦½μ± (Isolation)
λ μ΄μμ νΈλμμ μ΄ λμμ μ€νλκ³ μμ κ²½μ°, λ€λ₯Έ νΈλμμ μ μ°μ°μ λΌμ΄λ€ μ μλ€.
λ€λ₯΄κ² νννλ©΄ νλμ νΉμ νΈλμμ μ΄ μλ£λ λ κΉμ§, λ€λ₯Έ νΈλμμ μ΄ μ΄ νΈλμμ μ κ²°κ³Όλ₯Ό μ°Έμ‘°ν μ μλ€λ κ²μ μλ―Έν©λλ€.
- μ§μμ± (Durability)
νΈλμμ μ΄ μ±κ³΅μ μΌλ‘ μλ£λμμ κ²½μ°, κ²°κ³Όλ μꡬμ μΌλ‘ λ°μλμ΄μΌ νλ€
Isolation Level
격리 μμ€ μ΄λ λμμ μ¬λ¬ νΈλμμ μ΄ μ²λ¦¬λ λ, λ€λ₯Έ νΈλμμ μμ λ³κ²½νκ±°λ μ‘°ννλ λ°μ΄ν°λ₯Ό λ³Ό μ μλλ‘ νμ©ν μ§ λ§μ§ κ²°μ νλ κ²μ λ§νλ€.
μμ νΈλμμ μ 4κ°μ§ μμ±μ λ€ μ§ν€λ©΄ SERIALIZABLE μ΄λ©°, μ΄ κ²½μ°μλ λ€μ€ νΈλμμ μ²λ¦¬ λΆκ° νκ² λλ€.
λ°λΌμ λ 립μ±μ μ‘°κΈμ© ν¬κΈ°νλ©΄μ μ±λ₯μ λμ΄κΈ° μν΄ Isolation Levelμ λλμ΄ μ΄μ©νλ€.
μ’ λ₯
- READ UNCOMMITTED
- λ€λ₯Έ νΈλμμ μμ κ°μ μ½μ μ μλ€.
- μ ν©μ±μ λ¬Έμ λ§μ, μ¬μ©νμ§ μλ κ² κΆμ₯ (Dirty Read νμ λ°μ)
- READ COMMITTED
- DBμμ λλΆλΆ κΈ°λ³Έμ μΌλ‘ μ¬μ©λκ³ μλ 격리 μμ€
- commitμ΄ μλ£λ λ°μ΄ν°λ§ selectμμ μ°Έμ‘° κ°λ₯
- νλμ νΈλμμ
μμμ selectλ₯Ό μνν λ λ§λ€ λ°μ΄ν°κ° λμΌνλ€λ 보μ₯ x
- λ€λ₯Έ νΈλμμ μμ ν΄λΉ λ°μ΄ν°λ₯Ό commitνμ κ²½μ°μλ commitμ΄νμ λ°μ΄ν°λ₯Ό λ°νν΄ μ£ΌκΈ° λλ¬Έμ΄λ€.
- Consistente Readλ₯Ό μνν΄μΌ ν¨
- νΈλμμ μμ Readλ₯Ό ν λ, νμ¬μ DBκ°μ΄ μλ νΉμ μμ μ DB μ€λ μ·μ μ½μ΄μ€λ κ²μ λ§ν¨
- Non-repeatable ReadλΌκ³ λ νλ€.
- REPEATABLE READ
- ν νΈλμμ μμ λ°λ³΅ν΄μ SelectνλλΌλ μ½μ΄λ€μ΄λ κ°μ΄ λμΌν¨μ 보μ₯
- νΈλμμ λ΄μμ μ²μμΌλ‘ selectν μνμκ° κΈ°λ‘ν λ€, κ·Έ μ΄νμ selectλ§λ€ κΈ°λ‘ν μμ μ κΈ°μ€μΌλ‘ consistent readλ₯Ό μνν΄μ€.
- SERIALIZABLE
- λ¨μνκ³ μ격ν levelμ΄λ€.
- λͺ¨λ μμ μ λν΄ λ°μ΄ν°λ₯Ό lockνκ³ μ¬μ©νλ€.
- Phantom Read λ°©μ§
- update ν commitνκ³ λ€μ μ‘°ν νμ λ, μμκ³Ό λ€λ₯Έ κ°μ΄ 보μ΄κ±°λ λ°μ΄ν°κ° μ μ€λ κ²½μ°λ₯Ό λ°©μ§ν μ μλ€.
- κ΅μ°©μν(DeadLock)μ λΉ μ§ μ μκΈ° λλ¬Έμ μ μ€νκ² κ³μ°νκ³ μ¬μ©ν΄μΌν¨
- λ¨μνκ³ μ격ν levelμ΄λ€.
Readμμλ REPEATABLE READ
CUD μμλ SERIALIZABLE μ μ¬μ©νλ κ²μ΄ μ μ νλ€.
Commit, Rollback μ°μ°
commit : μ±κ³΅μ μΌλ‘ μλ£λμμ λ λλ¬λ€κ³ μλ €μ£Όλ κ² + μꡬμ μΌλ‘ μ μ₯
rollback : μ€κ°μ μ€ν¨ν΄μ μμμ±μ΄ κΉ¨μ§ κ²½μ°, μ¬μμνκ±°λ νΈλμμ μ΄ μμνκΈ° μ μΌλ‘ μ·¨μμν΄
'TIL' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[AWS EC2] key-pairλ₯Ό μ΄μ©ν ssh μ°κ²° (0) | 2024.06.24 |
---|---|
[TIL] ν리μ¨λ³΄λ© μΈ λ²μ§Έ κ³Όμ _RedBrick (1) | 2021.12.12 |
[TIL] ν리μ¨λ³΄λ© λ§μ§λ§, μΌκ³± λ²μ§Έ κ³Όμ _Cardoc (0) | 2021.12.02 |
[TIL] ν리μ¨λ³΄λ© λ λ²μ§Έ κ³Όμ _MAPIA (0) | 2021.11.25 |
[TIL] ν리μ¨λ³΄λ© 첫 λ²μ§Έ κ³Όμ νκ³ λ‘ (0) | 2021.11.12 |