59. 인덱스에 저장되어 있는 ROWID는 오브젝트 번호, 데이터 파일 번호, 블록 번호와 같은 물리적 요소들로 구성되어 있다. <보기>는 인덱스 ROWID를 이용해 테이블 블록을 읽는 전체 메커니즘 중 일부 과정을 보여준다. 이를 순서대로 올바르게 나열한 것은?
<보기>
ㄱ. LRU 리스트를 스캔하면서 빈 버퍼를 찾는다. ㄴ. 디스크에서 블록을 읽어 버퍼 캐시에 적재한다. ㄷ. 해시 버켓에 연결된 해시 체인을 스캔하면서 블록 헤더를 찾는다. ㄹ. 인덱스에서 하나의 ROWID를 읽고 디스크상의 블록위치정보를 해시 함수에 적용해 해시값을 확인한다. ㅁ. Dirty 버퍼를 디스크에 기록해 빈 버퍼를 확보한다. |
① ㅁ – ㄱ - ㄴ – ㄹ - ㄷ
② ㄹ - ㄷ - ㄱ - ㅁ - ㄴ
③ ㄷ - ㄹ - ㄱ – ㄴ - ㅁ
④ ㄹ - ㄷ - ㅁ – ㄱ – ㄴ
■ 해설
- rowid '물리적 주소정보' 는 오브젝트 번호, 데이터 파일 번호, 블록 번호 같은 물리적 요소들로 구성(메모리 상의 위치정보가 아니라 디스크 상의 위치정보)
- 데이터 블록을 읽을 때는 항상 버퍼 캐시를 경유하므로 메모리 상에서 버퍼 블록을 찾기 위해 해시 구조와 알고리즘을 사용함(해시 키(Key) 값으로는 rowid 에 내포된 데이터 블록 주소(Data Block Address, DBA)를 사용)
- RowID → 버킷(Bucket) → 체인(Chain) → 헤더(Header) 의 구조
인덱스 ROWID 를 이용해 테이블 블록을 읽는 메커니즘
- 인덱스 ROWID에 의한 테이블 액세스 구조
- 인덱스에서 하나의 rowid 를 일고 DBA(디스크 상의 블록 위치 정보)를 해시 함수에 적용해 해시 값을 확인한다.
- 해시 값을 이용해 해시 버킷을 찾아간다.
- 해시 버킷에 연결된 해시 체인을 스캔하면서 블록 헤더를 찾는다.
- 해시 체인에서 블록 헤더를 찾으면 거기 저장된 포인터를 이용해 버퍼 블록을 읽는다.
- 해시 체인을 스캔하고도 블록 헤더를 찾지 못하면, LRU 리스트를 스캔 하면서 Free 버퍼를 찾는다(디스크에서 읽은 블록을 적재하기 위해 빈 캐시 공간을 찾는 것이다.)
- LRU 리스트에서 Free 버퍼를 얻지 못하면 Dirty 버퍼를 디스크에 기록해 Free 버퍼를 확보한다.
- Free 버퍼를 확보하고 나면 디스크에서 블록을 읽어 캐시에 적재한다.
정답 : ②
60. 아래와 같은 STUDENT 테이블과 ENROLL 테이블에 대한 <SQL 질의문>이 수행될 때, 생성되는 결과 테이블의 카디널리티(cardinality)로 옳은 것은?
<SQL 질의문>
SELECT STUDENT.SNO, ENROLL.ENO, ENROLL.GRADE FROM STUDENT LEFT OUTER JOIN ENROLL ON STUDENT.SNO = ENROLL.SNO; |
① 4 ② 5 ③ 6 ④ 7
■ 해설
<SQL 질문>
SELECT STUDEN.SNO, ENROLL.ENO, ENROLL.GRADE FROM STUDENT LEFT OUTER JOIN ENROLL ON STUDEN.SNO = ENROLL.SNO; |
STUDENT LEFT OUTER JOIN ENROLL
STUDENT 테이블에 대해 Left Outer 조인이기 때문에 최소 5개 이상의 Row 가 조회되어야 하고 S03이 ENROLL 에 2건 존재하기 때문에 전체 6건이 조회가 됨
정답 : ③
공감과 댓글은 아이티신비에게 큰 힘이 됩니다.
블로그 글이 유용하다면 블로그를 구독해주세요.♥
'정보시스템 감리 기출해설 > 데이터베이스 해설' 카테고리의 다른 글
(제 25회) 데이터베이스 / (61)~(62) 해설 (0) | 2025.01.30 |
---|---|
(제 25회) 데이터베이스 / (57)~(58) 해설 (0) | 2025.01.28 |
(제 25회) 데이터베이스 / (55)~(56) 해설 (0) | 2025.01.27 |
(제 25회) 데이터베이스 / (53)~(54) 해설 (0) | 2025.01.26 |
(제 25회) 데이터베이스 / (51)~(52) 해설 (0) | 2025.01.25 |