[DB] 낙관적 락과 비관적 락
낙관적 락 동시성 문제가 일반적으로 발생하지 않을 것으로 보고(=낙관적), 락을 걸지 않고 시작한다. 별도의 Version 컬럼을 두고, 트랜잭션을 커밋할 시점에 동시성 문제가 발생했는지 검증한다. 트랜잭션을 커밋할 때까지 동시성 문제가 발생함을 알 수 없으며, 발생한 경우 애플리케이션 로직으로 처리한다. 비관적 락 동시성 문제가 빈번히 발생할 것으로 보고(=비관적), 트랜잭션을 시작할 때 락을 걸고 시작한다. select for update와 같은 쿼리를 활용하며, 데이터베이스가 제공하는 락을 활용한다. 낙관 vs 비관 두 개념은 각각 다음과 같은 장단점을 가지므로, 상황에 맞게 무엇을 사용할지 결정해야 한다. 낙관적 락은 일반적인 상황에서 성능이 더 좋으나, 충돌 발생시 이를 처리하기 번거롭다. 비관..
Dev./persistence
2023. 10. 10. 09:14
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 코딩테스트
- Database
- spring boot
- terraform
- RancherDesktop
- Spring Cloud Config
- Java
- Gradle
- jQuery
- Vault
- javascript
- AWS IoT
- Linux
- react
- pgloader
- Node.js
- JPA
- hashicorp
- JEST
- kotlin
- etc
- Puppeteer
- Git
- Docker
- shell
- AWS
- postgresql
- IntelliJ
- mysql
- eureka
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함