안녕하세요!!
오늘은 query process('select & update')에 대하여 이야기해 보도록 하겠습니다.
우선 본론으로 들어가기전에 이전에 설명을 한 메모리 구조에 대해서
한번 더 리뷰 하면 좋을 것 같습니다.
https://btcd.tistory.com/60?category=927631
1. Select process
가장 기본적인 'Select'의 process부터 을 알아보겠습니다!!
아래는 전반적인 process를 정리한 것입니다.
'Select'는 비교적 간단한 process를 가집니다.
1. User가 'Select' SQL 입력
2. User / Server process 거쳐 parsing을 진행함
- 문법 검사 : SQL 문법에 대한 검사
- 의미 검사 : 테이블 이름이나 칼럼 이름 검사
- 권한 검사 : 해당 사용자가 이 테이블에 접근할 수 있는지 검사
(parsing에 대한 조금 더 구체적인 설명은 아래 글을 보시면 좋을 것 같습니다)
https://btcd.tistory.com/91?category=927631
3. SQL로 요청한 data가 buffer cache에 있는 경우, 빠르게 data를 user에게 반환
- 아래 그림은 위에서 소개한 process에서 DB buffer cache와 datafile 부분만 가져온 것입니다.
- 요청한 data가 buffer cache에 존재하는 경우 buffer cache에서 그대로 user에게 전달을 하게 됩니다.
4. SQL로 요청한 data가 buffer cache에 없는 경우, Datafile에서 가져와 반환한다
- 하지만, buffer cache에 data가 존재하지 않는 경우 디스크에서 물리적으로 데이터를 가져와 user에게 반환시킵니다.
- 물리적으로 data를 디스크에서 가져오기 때문에 그만큼의 I/O가 발생하게 됩니다.
*이때, data buffer chche에 data의 존재 유무를 결정짓는 것은 'LRU 알고리즘'입니다.(아래 글 참고하세요!!)
https://btcd.tistory.com/153?category=927631
생각보다 글이 길어져 'update'에 대한 process는 다음 게시글에 설명하도록 하겠습니다!!
'Database' 카테고리의 다른 글
[24/365] 쿼리 Select & Update 과정(2) (0) | 2022.06.03 |
---|---|
함수적 종속(Functional Dependency) (0) | 2022.05.30 |
이상 현상(Anomaly)이란? (0) | 2022.05.13 |
[24/365] LRU 알고리즘이란...? (0) | 2022.05.13 |
[24/365] Oracle DB 논리적 구조 (0) | 2022.05.09 |
댓글