h4. 문제 1. 다음 중 옵티마이저의 역할이 아닌 것은 ? 1) 사용자가 던진 쿼리수행을 위해, 후보군이 될만한 실행계획을 찾는다. 2) 데이터 딕셔너리(Data Dictionary) 에 미리 수집해 놓은 오브젝트 통계 및 시스템 통계정보를 이용해 각 실행계획의 예상비용을 산정한다. 3) 각 실행계획을 비교해서 최저비용을 갖는 하나를 선택한다. 4) 언제라도 새로운 SQL 을 로드하는 데 문제가 생기지 않도록 LRU 알고리즘으로 공유 풀 (프로시저 캐시)을 관리한다. |
h4. 문제 2. 최적화 목표에 대한 설명으로 바르지 않은 것은 ? 1) 쿼리 최종 결과 집합을 끝까지 읽는 것을 전제로, 시스템 리소스 (I/O, CPU, 메모리 등) 를 가장 적게 사용하는 실행계획을 선택하는 것을 '전체 처리속도 최적화' 라고 한다. 2) 전체 결과집합 중 일부만 읽다가 멈추는 것을 전제로, 가장 빠른 응답 속도를 낼 수 있는 실행계획을 선택하는 것을 '최초 응답속도 최적화' 라고 한다. 3) 대용량 데이터베이스를 처리하는 DW, OLAP 성 애플리케이션에서 사용자가 요구한 결과집합을 최대한 빠르게 읽고 출력하려면 옵티마이저 모드를 '최초 응답속도 최적화' 로 설정해야 한다. 4) 똑같은 쿼리라도 최적화 목표를 어떻게 설정하느냐에 따라 실행계획이 달라질 수 있다. |
h4. 문제 3. 다음 중 옵티마이저 행동에 영향을 미치는 요소가 아닌 것은? 1) 테이블 개수 2) 데이터량이나 인덱스 크기 3) 옵티마이저 힌트 4) DBMS 제약 설정 |
h4. 문제 4. Oracle 에서 leading 힌트의 용도를 바르게 설명한 것은? 1) 조인보다 서브쿼리 필터링을 먼저 처리하도록 지시하는 힌트다. 2) 테이블 조인 순서를 지정하는 힌트다. 3) FROM 절에 나열된 순서대로 조인을 수행하도록 지시하는 힌트다. 4) 분산 DB 환경에서 어느 쪽 서버가 쿼리를 처리할지 지정하는 힌트다. |
h4. 문제 5. SQL Server 에서 힌트를 기술하는 3가지 방법으로 틀린 것은? 1) 테이블 힌트 2) 조건절 힌트 3) 쿼리 힌트 4) 조인 힌트 |
h4. 문제 6. 쿼리변환에 대한 설명 중 틀린 것은? 1) 뷰나 서브쿼리는 풀어서 메인 쿼리와 조인 형태로 처리하는 것이 항상 더 낫다. 2) 옵티마이저가 수행한 쿼리변환에 의해 결과집합이 틀려지는 일이 절대 발생해선 안 된다. 만약 그런 경우가 있다면 버그다. 3) 분석함수를 내포한 뷰가 있다. 그 뷰를 참조하는 메인 쿼리의 조건절이 뷰 안으로 들어가 먼저 필터링 처리가 일어난다면 결과집합에 오류가 생길 수 있다. 4) 비용기반(Cost-based) 쿼리 변환은 변환된 쿼리의 예상 수행비용이 원본 쿼리보다 낮을 때만 그것을 사용한다. |
정답 : 4 / 3 / 1 / 2 / 2 / 1
문제 6. 해설
: 뷰 Merging , 서브쿼리 Unnesting 이 항상 좋은 성능을 보장하진 않는다. 비용기반(Cost-based) 쿼리 변환이 도입된 것도 그 때문이다.