본문 바로가기
Database

[24/365] 쿼리 Select & Update 과정(2)

by 알 수 없는 사용자 2022. 6. 3.

안녕하세요!!

저번 게시글에 이어 'Query process(update)'에 대하여 이야기해 보도록 하겠습니다.

이전 게시글은 아래 링크 참고해주세요!!

 

https://btcd.tistory.com/213?category=927631 

 

[24/365] 쿼리 Select & Update 과정(1)

안녕하세요!! 오늘은 query process('select & update')에 대하여 이야기해 보도록 하겠습니다. 우선 본론으로 들어가기전에 이전에 설명을 한 메모리 구조에 대해서 한번 더 리뷰 하면 좋을 것 같습니다.

btcd.tistory.com

 


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

댓글