Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 튜닝
- matplotlib
- 빅분기
- sklearn
- Oracel
- 실습
- Numpy
- 실기
- 빅데이터 분석 기사
- 파이썬
- python3
- 머신러닝
- 카카오
- 코딩테스트
- SQL
- oracle
- 알고리즘
- level 1
- 프로그래머스
- Kaggle
- R
- pandas
- 데이터 분석
- 오라클
- Python
- level 2
- seaborn
Archives
- Today
- Total
라일락 꽃이 피는 날
[Oracle] Select For Update 본문
728x90
락(LOCK)
특정 행을 갱신하는 update 문장이 있다면, 그 update 문장을 수행하는 세션은 update 하는 행에 lock 을 건다.
그리고 그 lock 은 commit 이나 rollback 을 할 때까지 유지된다.
왜 lock 을 거는 걸까?
내가 변경하고 있는 데이터를 지금 변경하고 있는 이 순간에는 나만이 변경할 수 있고,
다른 세션들은 변경하지 못하도록 하기 위해서다.
내가 변경한 데이터를 누군가 바로 변경했다면 데이터의 일관성이 깨지게 된다.
lock은 데이터의 일관성이 깨지지 않도록 해준다.
Select For Update
보통 lock 은 update 문을 수행할 때 필요한 것이다.
그런데 select 를 할 때도 lock 을 걸 수 있다.
예제 1. 오늘 밤 12시에 오늘 전국 총 매출을 집계 하고 싶다.
select sum(매출)
from 테이블
where 날짜 = '2022/06/03'
for update;
정확한 집계를 위해서 아무도 데이터를 갱신하지 못하도록 해당 행을 잠깐 잠궈버린다.
728x90
'프로그래밍 > Oracle' 카테고리의 다른 글
[Oracle] 계층형 질의문 (0) | 2022.06.07 |
---|---|
[Oracle] 서브 쿼리를 사용하여 데이터 활용 (0) | 2022.06.03 |
[Oracle] 데이터 입력/수정/삭제 한 번에 하기 (Merge) (0) | 2022.06.03 |
[Oracle] 데이터 저장 및 취소 (0) | 2022.06.03 |
[Oracle] 데이터 삭제 (0) | 2022.06.03 |