PostgreSQL ROW LOCK걸기(FOR UPDATE, SKIP LOCKED)
아래와 같은 테이블 tbl_entry가 있을 때 id status assign 1 100 F 2 100 F 3 100 F 4 200 F 5 200 F 요청이 들어오면 assign = F인 id 오름차순 첫번째 레코드를 가져와서 assign을 T로 바꾸고 해당 레코드의 정보를 화면에 표시한다. 가져오는 SQL SELECT * FROM tbl_entry WHERE status = ? AND assign = F OFFSET 0 LIMIT 1 그런데 동시에 3명의 유저가 같은 동작을 실행하면 모두가 id=1인 레코드를 가져버린다. 이걸 방지하기 위해서는 "FOR UPDATE"를 쓰면 되는데 이걸 쓰면 해당 레코드에 락이 걸려서 트랜잭션이 끝날 때까지 기다린다. 해당 레코드에 락을 거는 SQL SELECT * F..
today'work
2023. 7. 20. 21:22
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- springintegration #파일감시 #디렉토리감시 #파일완료검사
- PostgreSQL #sequnceName
- logback #logstash #LoggingEventCompositeJsonEncoder #로그JSON
- Maven LF #메이븐 개행문자
- lombok #maven build #sym
- add two numbers
- Postgresql #MultiTruncate
- spring #redis #redis-cluster
- multipleIntegrationFlow
- AWS #X-Ray
- excel to markdown
- 로그테스트 #콘솔로그테스트 #System.out
- mybatis @insert값 @update값
- Two Sum
- reverse integer
- leetcode
- spring-integration
- aws #aws region #aws credential #aws region provider #aws credential provier
- cannotResolveSymbol
- 로그파일인덱스
- palindrome number
- json
- PostgreSQL #FOR UPDATE #SKIP LOCKED
- SnakeYAML
- excel table
- QR코드읽기 #ReadQRCode
- Python #Powertools
- opencv로qr코드인식
- yaml
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함