λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ“˜ DataBase/Mysql

[DB] νŠΈλžœμž­μ…˜κ³Ό 락 κ°„λž΅ 정리

by GroovyArea 2024. 6. 27.

νŠΈλžœμž­μ…˜

νŠΈλžœμž­μ…˜μ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜ 개발 μž…μž₯μ—μ„œ, κ³ λ―Όν•΄μ•Ό ν•  문제λ₯Ό ν’€μ–΄μ£ΌλŠ” ν•„μˆ˜μ μΈ DBMS 의 κΈ°λŠ₯.

νŠΈλžœμž­μ…˜ μ‚¬μš© μ‹œ μ£Όμ˜μ‚¬ν•­

DBMS 의 컀λ„₯μ…˜κ³Ό λ™μΌν•˜κ²Œ κΌ­ ν•„μš”ν•œ μ΅œμ†Œμ˜ μ½”λ“œμ—λ§Œ μ μš©ν•˜λŠ” 것이 μ’‹λ‹€.
νŠΈλžœμž­μ…˜μ˜ λ²”μœ„λ₯Ό μ΅œμ†Œν™”ν•˜λΌλŠ” 의미.
각 λ‹¨μœ„ν”„λ‘œκ·Έλž¨μ΄ 컀λ„₯μ…˜μ„ μ†Œμœ ν•˜λŠ” μ‹œκ°„μ΄ κΈΈμ–΄μ§ˆ 수둝 μ‚¬μš© κ°€λŠ₯ν•œ μ—¬μœ  컀λ„₯μ…˜μ˜ κ°œμˆ˜λŠ” 쀄어든닀.
메일 μ „μ†‘μ΄λ‚˜, 파일 전솑 μž‘μ—… λ“±, λ„€νŠΈμ›Œν¬λ₯Ό 톡해 원격 μ„œλ²„μ™€ ν†΅μ‹ ν•˜λŠ” μž‘μ—…μ€ νŠΈλžœμž­μ…˜ λ‚΄μ—μ„œ μ œκ±°ν•˜λΌ.
μ›Ή μ„œλ²„λΏ μ•„λ‹ˆλΌ DBMS μ„œλ²„κΉŒμ§€ μœ„ν—˜ν•œ 상황 λ°œμƒ
μ €μž₯ λ°μ΄ν„°μ˜ λ‹¨μˆœ 쑰회의 κ²½μš°λ„ νŠΈλžœμž­μ…˜μ— 포함할 ν•„μš”κ°€ μ—†λ‹€.

락

λ ˆμ½”λ“œ 락

λ ˆμ½”λ“œ μžμ²΄λ§Œμ„ μž κ·ΈλŠ” 것
InnoDB μŠ€ν† λ¦¬μ§€ 엔진은 λ ˆμ½”λ“œ μžμ²΄κ°€ μ•„λ‹ˆλΌ, 인덱슀의 λ ˆμ½”λ“œλ₯Ό μž κ·Όλ‹€.
μΈλ±μŠ€κ°€ 없을 경우, λ‚΄λΆ€μ μœΌλ‘œ μžλ™ 생성 된 ν΄λŸ¬μŠ€ν„° 인덱슀λ₯Ό 톡해 μž κΈˆμ„ μ„€μ •.

μžλ™ 증가 락

mysql 의 AUTO_INCREMENT 칼럼 속성은 INSERT μ‹œμ—λ§Œ λ°œμƒ.
ν…Œμ΄λΈ” μˆ˜μ€€μ˜ 락이닀.
λͺ…μ‹œμ μœΌλ‘œ νšλ“ν•˜κ³  ν•΄μ œν•˜λŠ” 방법은 μ—†λ‹€. μ•„μ£Ό 짧은 μ‹œκ°„ κ±Έλ Έλ‹€ ν•΄μ œλ˜λŠ” μž κΈˆμ΄λΌμ„œ λŒ€λΆ€λΆ„μ˜ 경우 λ¬Έμ œκ°€ λ˜μ§€ μ•ŠλŠ”λ‹€.

μΈλ±μŠ€μ™€ 잠금

μΈλ±μŠ€κ°€ μ—†λŠ” 칼럼으둜 μ“°κΈ°λ₯Ό μ§„ν–‰ν•  경우,
μΈλ±μŠ€κ°€ κ±Έλ € μžˆμ§€ μ•Šμ€ λ ˆμ½”λ“œμ— λͺ¨λ‘ 락이 걸리게 λœλ‹€.

격리 μˆ˜μ€€

νŠΈλžœμž­μ…˜ O select

  • REPEATABLE READ 격리 μˆ˜μ€€μ—μ„œλŠ” νŠΈλžœμž­μ…˜ λ²”μœ„ λ‚΄μ—μ„œ μž‘λ™
  • 항상 λ™μΌν•œ 결과만 λ°˜ν™˜

언두 λ ˆμ½”λ“œλŠ” μž κΈˆμ„ κ±Έ μˆ˜κ°€ μ—†λ‹€. β†’ FOR UPDATE, LOCK IN SHARE MODE λŠ” ν˜„μž¬ λ ˆμ½”λ“œ 값을 κ°€μ Έμ˜΄

λ°˜μ‘ν˜•

'πŸ“˜ DataBase > Mysql' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[DB] μ˜΅ν‹°λ§ˆμ΄μ € (1)  (0) 2024.08.11
쿼리 μž‘μ„± 및 μ΅œμ ν™”  (0) 2022.05.17