<aside> 🚨 MySQL은 row(record)에 lock을 κ±°λŠ” 것이 μ•„λ‹ˆλΌ index에 lock을 κ±ΈκΈ° λ•Œλ¬Έμ— μΈλ±μŠ€κ°€ μ—†λŠ” 쑰건으둜 lock이 ν•„μš”ν•œ μž‘μ—…μ„ ν•  λ•Œ λΆˆν•„μš”ν•œ lock이 많이 μž‘ν˜€ μ„±λŠ₯을 μ €ν•˜μ‹œν‚¨λ‹€.

</aside>

MySQL 갭락

MySQL λ„₯슀트 ν‚€λ½μ˜ λ“±μž₯ λ°°κ²½

MySQL μ™Έλž˜ν‚€λ‘œ μΈν•œ lock

MySQL λ°λ“œλ½

비관적 락(Pessimistic Lock) & 낙관적 락(Optimistic Lock)

비관적 락(Pessimistic Lock)

νŠΈλžœμž­μ…˜μ΄ μ‹œμž‘λ  λ–„ Lock을 κ±Έκ³  μ‹œμž‘ν•˜λŠ” 방법이닀.

비관적 락은 REPEATABLE READ λ˜λŠ” SERIALIZABLE μ •λ„μ˜ 격리성 μˆ˜μ€€μ„ μ œκ³΅ν•œλ‹€.

낙관적 락(Optimistic Lock)

DBμ—μ„œ μ œκ³΅ν•΄μ£ΌλŠ” νŠΉμ§•μ„ μ΄μš©ν•˜λŠ” 것이 μ•„λ‹Œ Application Levelμ—μ„œ version number λ“±μœΌλ‘œ Lock을 μž‘λŠ” 방법이닀.

낙관적 락은 λ™μ‹œμ„± μ΄μŠˆκ°€ λΉˆλ²ˆν•˜μ§€ μ•Šμ„ 것을 μ˜ˆμƒν•˜μ—¬, μ–΄ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ λ™μ‹œμ„±μ„ μ œμ–΄ν•  λ•Œ μ‚¬μš©λœλ‹€.