728x90
동시성 제어
데이터 무결성을 침해하지 않고 동시에 트랜잭션을 처리할 때 이를 제어하는 방법을 총칭
LOCK
동시성 제어의 한 방법으로, 데이터에 잠금을 걸어 읽기/변경/삭제 등을 제한하는 수단
낙관적인 락: 락을 사용하지 않는 락 방법
- 충돌이 발생하지 않는다고 가정
- Version Column을 추가(number, hash, timestamp 등)
- DB에서 처음 읽어온 version 기억
- update 시 현재 db의 version과 다르면 롤백
- 속도 빠름
비관적인 락: 충돌이 자주 발생할 것이라고 가정
- TABLE or ROW에 LOCK 걸고 트랜잭션 작업
- 다른 트랜잭션은 LOCK 획득까지 대기
- 해당 작업 완료 시 LOCK 해제
- 속도 느림
실전 적용:
콘서트 티케팅: SECOND LOST UPDATES 일어 날 수 있음 => 비관적인 락이 50% 이상 성능
'CS지식' 카테고리의 다른 글
스피링 부트 내장 톰캣 (0) | 2024.10.17 |
---|---|
InnoDB (0) | 2024.10.10 |
Nginx vs APACHE (1) | 2024.10.08 |
DB Index (0) | 2024.10.08 |
Cache & Redis (0) | 2024.10.07 |