관리 메뉴

βœπŸ»κΈ°λ‘ν•˜λŠ” λΈ”λ‘œκ·Έ

Transaction & Lock λ³Έλ¬Έ

DB/RDBMS

Transaction & Lock

μ©μ‹œν‚΄ 2022. 12. 24. 23:26
728x90

MySQL λ™μ‹œμ„±(μ—¬λŸ¬ μš”μ²­μ΄ ν•˜λ‚˜μ˜ μ ‘κ·Όν•˜λŠ” 경우)에 영ν–₯을 λ―ΈμΉ˜λŠ” μš”μ†Œλ“€μ˜ μš©μ–΄λ₯Ό λ¨Όμ € μ •λ¦¬ν•˜μž.

 

Transaction

  • λ°μ΄ν„°μ˜ 정합성을 보μž₯ν•˜κΈ° μœ„ν•œ κΈ°λŠ₯
  • db read, writeμž‘μ—…μ„ λ…Όλ¦¬μ μœΌλ‘œ λ¬ΆλŠ” 방식
  • νŠΈλžœμž­μ…˜μœΌλ‘œ 묢은 μž‘μ—…μ΄ μ„±κ³΅ν•˜λ©΄ commit, μ‹€νŒ¨ μ‹œ rollback을 ν•˜λ―€λ‘œ 뢀뢄성곡, λΆ€λΆ„ μ‹€νŒ¨(Partial Update)의 μœ„ν—˜μ΄ μ—†μŒ

Lock

  • λ™μ‹œμ„±μ„ μ œμ–΄ν•˜κΈ° μœ„ν•œ κΈ°λŠ₯
  • μ—¬λŸ¬ 컀λ„₯μ…˜μ—μ„œ λ™μ‹œμ— λ™μΌν•œ μžμ›μ„ μš”μ²­ν•  경우 μˆœμ„œλŒ€λ‘œ ν•˜λ‚˜μ˜ 컀λ„₯μ…˜λ§Œ λ³€κ²½ν•  수 있게 ν•˜λŠ” μ—­ν• 

Isolation level

  • λ™μ‹œμ— ν•˜λ‚˜ λ˜λŠ” μ—¬λŸ¬ νŠΈλžœμž­μ…˜μ΄ 진행될 λ•Œ, λ‹€λ₯Έ νŠΈλžœμž­μ…˜μ—μ„œ λ³€κ²½λœ 데이터λ₯Ό μ‘°νšŒν•˜λŠ” κΈ°μ€€
  • 일반적인 μ„œλΉ„μŠ€μ—μ„œλŠ” Read Commited, Repeatable Readλ₯Ό μ‚¬μš©

MySQL μ—”μ§„μ˜ 잠금

Global Lock

FLUSH TABLES WITH READ LOCK

Lock μ’…λ₯˜ 쀑 λ²”μœ„κ°€ κ°€μž₯ λ„“λ‹€.

Global Lock νšλ“ μ‹œ λ‹€λ₯Έ μ„Έμ…˜μ—μ„œ SELECT μ œμ™Έν•œ DDL, DML μž‘μ—…μ€ Global Lock이 ν•΄μ œλ˜κΈ°μ „κΉŒμ§€ λŒ€κΈ°μƒνƒœλ‘œ λ‚¨λŠ”λ‹€.

ν…Œμ΄λΈ” 락

κ°œλ³„ ν…Œμ΄λΈ” λ‹¨μœ„λ‘œ μ„€μ •λ˜λŠ” 잠금

LOCK TABLES table_name [READ | WRITE] --잠금
UNLOCK TABLES --μž κΈˆν•΄μ œ

MyISAM, Memoryν…Œμ΄λΈ”μ— 데이터λ₯Ό λ³€κ²½ν•˜λŠ” 쿼리 μ‹€ν–‰ μ‹œ λ¬΅μ‹œμ μΈ ν…Œμ΄λΈ” 락 λ°œμƒ

λ³€κ²½λ˜λŠ” ν…Œμ΄λΈ”μ— μž κΈˆμ„ μ„€μ •ν•˜κ³  ν…Œμ΄λΈ”μ„ 잠그고 데이터 변경이 μΌμ–΄λ‚œ λ’€, μ¦‰μ‹œ Lock을 ν•΄μ œν•œλ‹€. 

InnoDbμ—μ„œλŠ” μŠ€ν† λ¦¬μ§€ 엔진 μ°¨μ›μ—μ„œ λ ˆμ½”λ“œ 기반의 μž κΈˆμ„ μ œκ³΅ν•˜λ―€λ‘œ λ¬΅μ‹œμ μΈ ν…Œμ΄λΈ” 락이 λ°œμƒν•˜μ§€ μ•ŠλŠ”λ‹€.

λ„€μž„λ“œ 락

GET_LOCK(); ν•¨μˆ˜λ₯Ό μ΄μš©ν•΄ μž„μ˜μ˜ λ¬Έμžμ—΄μ— λŒ€ν•΄ 잠금 μ„€μ •

λ‹¨μˆœ μ‚¬μš©μžκ°€ μ§€μ •ν•œ λ¬Έμžμ—΄μ— λŒ€ν•΄ νšλ“ 및 λ°˜λ‚©ν•˜λŠ” 잠금.

λ„€μž„λ“œλ½μ€ 자주 μ‚¬μš©λ˜μ§€μ•ŠλŠ”λ‹€.

메타데이터 락

ν…Œμ΄λΈ”, λ·° λ“±μ˜ μ΄λ¦„μ΄λ‚˜ ꡬ쑰λ₯Ό λ³€κ²½ν•˜λŠ” 경우 νšλ“ν•˜λŠ” 잠금

λͺ…μ‹œμ μΈ νšλ“μ΄ λΆˆκ°€ν•˜λ©°, μ•„λž˜μ™€ 같이 ν…Œμ΄λΈ”λͺ…을 λ³€κ²½ μ‹œ μžλ™μœΌλ‘œ νšλ“λœλ‹€.

RENAME TABLE tab_a TO tab_b
728x90
λ°˜μ‘ν˜•

'DB > RDBMS' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

B-Tree  (0) 2023.01.29
Transaction Isolation 레벨  (0) 2023.01.09
Mysql - InnoDB μŠ€ν† λ¦¬μ§€ 엔진 잠금  (0) 2022.12.31
MySQL - InnoDB & MyISAM μŠ€ν† λ¦¬μ§€ 엔진 μ•„ν‚€ν…μ²˜  (0) 2022.12.05