λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
  • μ§€μš”λ―Έμ˜ ITμ„±μž₯일기
πŸ₯°STUDY/잠깐 상식!

νŠΈλžœμž­μ…˜(Transaction) - 병행 μ œμ–΄, λ‘œν‚Ή, νƒ€μž„μŠ€νƒ¬ν”„μΆœμ²˜

by μ§€μš”λ―Έ=P 2025. 1. 31.
728x90

 

νŠΈλžœμž­μ…˜μ΄λž€? Transaction

λ°μ΄ν„°λ² μ΄μŠ€μ˜ μƒνƒœλ₯Ό λ³€ν™”μ‹œν‚€κΈ° ν•΄μ„œ μˆ˜ν–‰ν•˜λŠ” μž‘μ—…μ˜ λ‹¨μœ„

 

μ›μžμ„± (Atomicity) :νŠΈλžœμž­μ…˜μ΄ λ°μ΄ν„°λ² μ΄μŠ€μ— λͺ¨λ‘ λ°˜μ˜λ˜λ˜κ°€, μ•„λ‹ˆλ©΄ μ „ν˜€ λ°˜μ˜λ˜μ§€ μ•Šμ•„μ•Ό ν•œλ‹€λŠ” 것

일관성 (Consistency) : νŠΈλžœμž­μ…˜μ˜ μž‘μ—… 처리 κ²°κ³Όκ°€ 항상 일관성이 μžˆμ–΄μ•Ό ν•œλ‹€λŠ” 것

독립성 (Isolation) : λ‘˜ μ΄μƒμ˜ νŠΈλžœμž­μ…˜μ΄ λ™μ‹œμ— μ‹€ν–‰λ˜μ—ˆμ„ λ•Œ, μ–΄λ–€ ν•˜λ‚˜μ˜ νŠΈλžœμž­μ…˜μ΄λΌλ„ λ‹€λ₯Έ νŠΈλžœμž­μ…˜μ˜ 연산에 끼어듀 수 μ—†λŠ” 것

지속성 (Durability) : νŠΈλžœμž­μ…˜μ΄ μ„±κ³΅μ μœΌλ‘œ μ™„λ£Œλ˜μ—ˆμ„ 경우, κ²°κ³ΌλŠ” 영ꡬ적으둜 λ°˜μ˜λ˜μ–΄μ•Ό ν•œλ‹€λŠ” 것

 

 

λ³‘ν–‰μ œμ–΄λž€? Concurrency Control

"병행"은 맀우 λΉ λ₯΄κ²Œ μ—¬λŸ¬ νŠΈλžœμž­μ…˜ 사이λ₯Ό μ΄λ™ν•˜λ©΄μ„œ μ‘°κΈˆμ”© 처리λ₯Ό μˆ˜ν–‰ν•˜λŠ” 방식.

μ‹€μ œλ‘œλŠ” ν•œλ²ˆμ— ν•œλ²ˆμ˜ νŠΈλžœμž­μ…˜λ§Œ μˆ˜ν–‰ν•˜μ§€λ§Œ, λ™μ‹œμ— μ—¬λŸ¬ νŠΈλžœμž­μ…˜μ„ μˆ˜ν–‰ν•˜λŠ” κ²ƒμ²˜λŸΌ 보이도둝 ν•œλ‹€.

 

 

λ³‘ν–‰μ œμ–΄μ˜ λͺ©μ 

- λ°μ΄ν„°λ² μ΄μŠ€μ˜ 일관성 μœ μ§€

- λ°μ΄ν„°λ² μ΄μŠ€ 곡유 μ΅œλŒ€ν™”

- μ‹œμŠ€ν…œ ν™œμš© μ΅œλŒ€ν™”

- μ‚¬μš©μž μ‘λ‹΅μ‹œκ°„ μ΅œμ†Œν™”

- λ‹¨μœ„ μ‹œκ°„λ‹Ή νŠΈλžœμž­μ…˜ 처리 건수 μ΅œλŒ€ν™”

 

 

λ³‘ν–‰μ œμ–΄ 기법

 

1. λ‘œν‚Ή (Locking)

νŠΈλžœμž­μ…˜μ΄ μ ‘κ·Όν•˜λ €λŠ” 데이터λ₯Ό λ‹€λ₯Έ νŠΈλžœμž­μ…˜μ΄ μ ‘κ·Όν•˜μ§€ λͺ»ν•˜λ„둝 μž κ·ΈλŠ”(Lock)ν•˜λŠ” 병행 μ œμ–΄ 기법

이λ₯Ό 톡해 μƒν˜Έλ°°μ œ κΈ°λŠ₯을 μ œκ³΅ν•˜λ©° μž κΈˆμ„ μ„€μ •ν•œ νŠΈλžœμž­μ…˜μ΄ ν•΄μ œν•  λ•ŒκΉŒμ§€ 데이터λ₯Ό λ…μ μ μœΌλ‘œ μ‚¬μš©ν•  수 있음

 

ν•œ λ²ˆμ— λ‘œν‚Ήν•  수 μžˆλŠ” 데이터 크기λ₯Ό λ‘œν‚Ήλ‹¨μœ„λΌκ³  ν•˜λ©° ν•„λ“œ/λ ˆμ½”λ“œ/ν…Œμ΄λΈ”/파일/λ°μ΄ν„°λ² μ΄μŠ€ λͺ¨λ‘ λ‘œν‚Ή λ‹¨μœ„κ°€ 될 수 있음

 

 

2. 2단계 λ‘œν‚Ή κ·œμ•½ (Two-Path Locking, 2PL)

각 νŠΈλžœμž­μ…˜μ˜ lockκ³Ό unlock μš”μ²­μ„ 2λ‹¨κ³„λ‘œ μ‹€μ‹œν•˜λŠ” 방식

ν™•μž₯단계와 μΆ•μ†Œλ‹¨κ³„λ‘œ λ‚˜λ‰œλ‹€.

이λ₯Ό 톡해 직렬성을 보μž₯ν•˜λŠ” λŒ€ν‘œμ μΈ λ‘œν‚Ή κ·œμ•½μ΄μ§€λ§Œ μ—¬μ „νžˆ lockμ—°μ‚°μœΌλ‘œ μΈν•œ κ΅μ°©μƒνƒœλ₯Ό μ˜ˆλ°©ν•  수 μ—†λ‹€λŠ” λ‹¨μ μžˆμŒ

 

- ν™•μž₯단계(Growing phase): μƒˆλ‘œμš΄ lock μ—°μ‚°λ§Œμ„ μˆ˜ν–‰ν•  수 있고, unlock 연산은 μˆ˜ν–‰ν•  수 μ—†λŠ” 단계

- μΆ•μ†Œλ‹¨κ³„(shrinking phase): unlock 연산을 μˆ˜ν–‰ν•  수 있고, lock연산은 μˆ˜ν–‰ν•  수 μ—†λŠ” 단계 

 

 

 

3. νƒ€μž„μŠ€νƒ¬ν”„ μˆœμ„œ (Timestamp ordering) 기법

비직렬 νŠΈλžœμž­μ…˜μ„ νƒ€μž„μŠ€νƒ¬ν”„ μˆœμ„œμ— 따라 직렬화 μ‹œν‚€λŠ” 방법

데이터에 μ ‘κ·Όν•˜λŠ” μ‹œκ°„(timestamp)을 미리 정해두어 λΆ€μ—¬λœ μ‹œκ°„ μˆœμ„œλŒ€λ‘œ 데이터에 μ ‘κ·Όν•˜λ©°, lock을 μ‚¬μš©ν•˜μ§€ μ•Šκ³  μ‹œκ°„μ„ λ‚˜λˆ  μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— κ΅μ°©μƒνƒœκ°€ λ°œμƒν•˜μ§€ μ•ŠλŠ”λ‹€.

ν•˜μ§€λ§Œ rollback λ°œμƒλ₯ μ΄ λ†’κ³ , 연쇄 볡귀λ₯Ό μ΄ˆλž˜ν•  수 μžˆλŠ” 단점이 있음

 

 

4. 낙관적 병행 μ œμ–΄ (Optimistic Concurrency Control)

νŠΈλžœμž­μ…˜ μˆ˜ν–‰ λ™μ•ˆμ€ μ–΄λ– ν•œ 검사λ₯Ό ν•˜μ§€ μ•Šκ³ , νŠΈλžœμž­μ…˜μ΄ μ’…λ£Œλœ 이후에 μΌκ΄„μ μœΌλ‘œ κ²€μ‚¬ν•˜λŠ” 방식

μˆ˜ν–‰ λ„μ€‘μ—λŠ” νŠΈλžœμž­μ…˜μ„ μœ„ν•΄ μœ μ§€λ˜λŠ” 데이터 ν•­λͺ©λ“€μ˜ 지역 사본에 λŒ€ν•΄μ„œλ§Œ κ°±μ‹ ν•˜κ³ , νŠΈλžœμž­μ…˜μ΄ μ’…λ£Œλ˜κ³  λ‚œ 후에 직렬화λ₯Ό κ²€μ¦ν•˜μ—¬ κ²€μ¦λ˜λ©΄ λ°μ΄ν„°λ² μ΄μŠ€μ— ν•œλ²ˆμ— λ°˜μ˜ν•˜λŠ” λ°©μ‹μž„

 

 

5. 닀쀑 버전 병행 μ œμ–΄ (Multi-version Concurrency Control)

ν•œ 데이터에 λŒ€ν•΄ μ—¬λŸ¬ λ²„μ „μ˜ 값을 μœ μ§€ν•˜λ©° κ΄€λ¦¬ν•˜λŠ” 방식

νƒ€μž„μŠ€νƒ¬ν”„ κ°œλ…μ„ μ΄μš©ν•˜λ©° 닀쀑 버전 νƒ€μž„ μŠ€νƒ¬ν”„ 기법이라고도 함

μ—¬λŸ¬ λ²„μ „μ˜ νƒ€μž„μŠ€νƒ¬ν”„λ₯Ό λΉ„κ΅ν•˜μ—¬ μŠ€μΌ€μ₯΄μƒ 직렬 κ°€λŠ₯성이 보μž₯λ˜λŠ” νƒ€μž„ μŠ€νƒ¬ν”„λ₯Ό μ„ νƒν•˜κ³ ,

좩돌이 λ°œμƒν•  경우 연쇄 볡귀가 λ°œμƒν•  수 μžˆλŠ” 단점이 있음

 

 

 

 

728x90

'πŸ₯°STUDY > 잠깐 상식!' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

Legacy BIOS vs UEFI  (2) 2024.10.22
api와 endpoint?  (0) 2024.07.17
ping dns둜 가지 μ•Šμ„ λ•Œ  (2) 2024.06.13
νŒŒλΌλ―Έν„°λž€?  (0) 2024.03.22
IP static으둜 κ³ μ •ν•˜κΈ°  (0) 2024.02.19