안녕하세요!!
저번 게시글에 이어 'Query process(update)'에 대하여 이야기해 보도록 하겠습니다.
이전 게시글은 아래 링크 참고해주세요!!
https://btcd.tistory.com/213?category=927631
1. Update process
우선 전반적인 process를 한번 보시죠!!
저번 게시글의 'select process'와 비슷한듯 하지만 분명히 다른점이 있습니다!
그 부분을 중점적으로 설명을 해보도록 하겠습니다.
1. User가 'Update' SQL 입력
2. User / Server process 거쳐 parsing을 진행함
- 문법 검사 : SQL 문법에 대한 검사
- 의미 검사 : 테이블 이름이나 칼럼 이름 검사
- 권한 검사 : 해당 사용자가 이 테이블에 접근할 수 있는지 검사
(여기 까지는 'Select process'와 동일 합니다!!)
3. 해당 DATA를 update 하기 위해 특정 data block에 접근하고, 해당 data block은 pinned 상태가 된다
- Data를 업데이트 하기위해서 특정 데이터 블록을 lock을 시킵니다. 이때 lock이 걸린 data block을 pinned라고 표현
- lock이 걸리는 이유는 업데이트 중인 데이터를 (lock에 대한 자세한 설명은 추 후 업데이트 하도록 하겠습니다!!)
4. 해당 DATA의 update가 완료 되면 Redo Log Buffer에 저장이 됩니다
- 이때 Redo Log Buffer에서 'LGWR'라는 백그라운드 프로세스에 의해서 Redo Logo File에 data를 저장하게 됩니다
- 이렇게 Redo Log File에 저장이 되면 update에 대한 'commit'이 완료가 된 것임
5. 최종적으로 DBWn을 통해서 Datafile에 저장함
- Redo Log File에 저장이 끝나면, 최종적으로 DBWn에 의해 datafile에 data가 저장이 된다
'Database' 카테고리의 다른 글
반 정규화(De-normalization) (0) | 2022.06.10 |
---|---|
[24/365] Oracle DB 물리적 구조 (0) | 2022.06.07 |
함수적 종속(Functional Dependency) (0) | 2022.05.30 |
[24/365] 쿼리 Select & Update 과정(1) (0) | 2022.05.23 |
이상 현상(Anomaly)이란? (0) | 2022.05.13 |
댓글