[SQLD 자격증] 2과목 | 테이블 파티션, 옵티마이저, 인덱스 설명 & 문제풀이

    728x90
    반응형

    테이블 파티션

    • 대용량의 테이블을 여러개의 데이터 파일에 분리하여 저장하는 것
    • 물리적으로 분리된 데이터 파일에 저장되어 입력/수정/삭제/조회 성능이 향상되고, 독립적 관리가 가능
    • 조회의 범위를 줄이는 효과가 잇어 성능이 향상됨

     

    • RANGE PARTITION
      • 값의 범위를 기준으로 파티션을 나눠 저장하는 방법
        ex. 매출액이 50000이상인 레코드와 미만인 레코드를 별도로 저장
    • LIST PARTITION
      • 특정 값을 기준으로 분할
        ex. 특정 값이 100일 때와 250일때 각각 다른 데이터파일에 저장
    • HASH PARTITION 
      • 데이터베이스 관리 시스템이 자체적으로 해시함수를 사용해 분할하고 관리하는 방식

     

    옵티마이저

    • SQL 실행계획을 수립하고, SQL을 실행하는 데이터베이스 관리 시스템의 소프트웨어
    • 같은 SQL문이더라도 어떻게 실행하냐에 따라 성능이 달라진다. (소요시간, 자원사용량 등)
      => SQL문을 분석한 후 일정한 기준을 통해 실행계획을 세워줘야함. 이때 사용되는 것이 옵티마이저

     

    • SQL문 작성 → Parsing(문법검사, 구문 분석) 옵티마이저(비용기반, 규칙기반) → 실행계획(PLAN_TABLE 저장) → SQL 실행

     

    • 옵티마이저(비용기반, 규칙기반)
      1. 옵티마이저는 ‘비용기반 옵티마이저'와 ‘규칙기반 옵티마이저'가 있으며,
        최신 Oracle은 비용기반을 deafult로 사용한다.
      2. 비용기반 옵티마이저는
        - 시스템 통계와 오브젝트 통계를 통해 해당 SQL문 실행에 대한 총 비용을 계산하고
        - 총 비용이 가장 적은 쪽으로 실행 계획을 수립한다.
      3. 규칙기반 옵티마이저는
        - 15가지 우선순위를 기준으로 실행계획을 수립한다.

     

    INDEX

    • 데이터의 색인(목차)와 동일. 원하는 데이터를 빠르게 조회할 수 있다.
    • 인덱스는 인덱스 키를 기준으로 정렬되어있다. => 따라서 탐색이 빨라진다.
    • Primary Key (기본키) 는 자동적으로 INDEX가 된다.
    • 하나의 테이블에 여러 개의 인덱스를 생성할 수 있고, 하나의 인덱스는 여러 컬럼으로 구성될 수 있다.

     

    • INDEX UNIQUE SCAN : 인덱스 키값이 중복되지 않을 때 해당 키를 통해 탐색
    • INDEX RANGE SCAN : 특정 범위를 조회하는 WHERE문을 사용하여 해당 영역을 스캔
    • INDEX FULL SCAN : 인덱스의 처음부터 끝까지 모두 스캔

     

    옵티마이저 문제

    1. 규칙기반 옵티마이저에서 가장 높은 우선순위는 전체 테이블 스캔 방식이다.
      >> 일반적으로 ROWID를 기반으로 스캔하는 것이 가장 높은 우선순위를 가진다.
    2. 인덱스는 오름차순으로 생성/정렬된다.
      >> 내림차순으로 생성 및 정렬됨
    3. 인덱스 범위 스캔은 항상 복수의 결과를 출력한다.
      >> 스캔 범위에따라 단수의 결과 혹은 0건의 결과 출력도 가능하다.
    4. 같은 SQL문이더라도 실행계획이 다르면 결과가 다르다.
      >> 동일하다.
    5. 자주 변화하는 속성을 인덱스로 설정하는 것은 좋지 않다.
      >> 그렇다. 삭제 및 조회 등의 작업에 있어서 변화를 초래하지 않는 것이 좋다. 
    6. 보조인덱스를 통한 스캔은 항상 전체 테이블 스캔보다 효율적이다.
      >> UNIQUE 속성을 가진 인덱스가 아니라면 중복 데이터 입력 가능하다.
    7. 비용 기반 옵티마이저는 항상 인덱스 스캔이 유리하다고 판단한다.
      >> 랜덤 액세스의 경우에는 많은 양의 데이터를 읽을 때 부하가 커서 오히려 전체 테이블 스캔이 유리할 수 있다.
    8. 비용 기반 옵티마이저는 항상 인덱스 스캔이 유리하다고 판단한다.
      >> 비용 기반으로, 전체 스캔이 유리할 수도 있다.
    9. 파티션 테이블은 파티션에 대해 인덱스를 생성할 수 있다.
      >> 파티션 키에 대해 인덱스를 생성가능하며, 그 경우 해당 인덱스를 Global 인덱스라고 부른다.
    10. 인덱스 수는 데이터의 입력, 삭제, 수정, 속도에 영향을 미치지 않는다.
      >> 인덱스의 수가 증가할 경우 입력, 삭제, 수정 속도가 느려질 수 있다.
    11. 인덱스 생성이 가능한 캐릭터 타입은 VARCHAR 와 NUMBER 뿐이다.
      >> VARCHAR, NUMBER, DATE, CHAR 모두 가능하다. 
    12. 인덱스 종류는 순차 인덱스, 비트맵, 결합인덱스, 클러스터, 해시 인덱스가 있다.
      >> 참이다.

     

     

    정답

     


     

    SQLD 목차 바로가기

    SQLD 과목 목차 링크
    1과목 
    데이터 모델링의 이해

    (10문항 출제)
    데이터 모델링의 이해 데이터모델링의 이해, 엔터티, 속성
    관계, 식별자
    데이터 모델과 성능 성능 데이터 모델링, 정규화, 반정규화 설명 & 문제풀이
    SQLD 2과목
    SQL 기본및 활용

    (40문항 출제)
    SQL 기본 관계형 데이터베이스 개요 및 DCL(GRANT, REVOKE) 설명 & 문제풀이
    DDL(CREAT, ALTER, DROP, RENAME, TRUNCATE) 설명 & 문제풀이
    DML(INSERT, UPDATE, DELETE) 설명 & 문제풀이
    TCL(ROLLBACK, SAVEPOINT, COMMIT) 설명 & 문제풀이
    DML(SLELECT) 기본구조 설명 & 문제풀이
    DML(SELECT) 함수(문자형, 숫자형, 날짜형, 형변환) 설명 & 문제풀이
    DML(SELECT) DECODE, CASE WHEN, ORDER BY 설명 & 문제풀이
    WHERE 절 연산자, 문자열 연산자, 임시테이블, VIEW 설명 & 문제풀이
    NULL 함수, GROUP BY, HAVING, ROWNUM & ROWID 설명 & 문제풀이
    SQL 활용 GROUP 함수 설명 & 문제풀이
    JOIN, UNION, MINUS, 서브쿼리 설명 & 문제풀이
    계층형 조회 설명 & 문제풀이
    WINDOW 함수 전체 설명 & 문제풀이
    SQL 최적화 기본원리 테이블 파티션, 옵티마이저, 인덱스 설명 & 문제풀이
    옵티마이저 JOIN, PL-SQL, 분산 데이터베이스 설명 & 문제풀이

     

    728x90
    반응형

    댓글