1. 보조기억장치
    1. 블록 단위로 읽고 쓰기
    2. 자기 디스크
      1. 트랙
      2. 섹터
      3. 실린더
      4. 탐구시간(seek time)
      5. 회전 지연 시간(rotational delay)
      6. 전송 시간(transfer time)
    3. 버퍼 : 디스크 블록들을 저장하는데 사용되는 주기억 장치 공간
  2. 디스크 상에서 파일의 레코드 배치
    1. 릴레이션 애트리뷰트는 고정길이 또는 가변 길이 필드로 표현됨
    2. 한 릴레이션을 구성하는 레코드들의 모임을 파일에 저장됨
    3. 블록들이 반드시 인접해 저장될 필요는 없음
    4. BLOB(Binary Large Object) : 이미지, 동영상 등 대규모 크기 데이터 저장
      1. 오라클 : 8TB~128TB까지 지원
    5. 파일 내 클러스터링(intra-file clustering)
      1. 한 파일 내에서 함께 검색될 가능성이 높은 레코드들을 디스크 상에서 물리적으로 가까운 곳에 모아 두는 것
    6. 파일 간의 클러스터링(inter-file clustering)
      1. 논리적으로 연관되어 함께 검색될 가능성이 높은 두 개 이상의 파일에 속한 레코드들을 디스크 상에서 물리적으로 가까운 곳에 저장
  3. 파일 조직의 유형
    1. 힙 파일(heap file)
      1. 가장 단순한 파일
      2. 삽입 순서대로 저장
      3. 검색 : 순차 검색
    2. 순차 파일(sequential file)
      1. 레코드들이 하나 이상의 필드 값에 따라 순서대로 저장된 파일
    3. 인덱스된 순차 파일(indexed sequential file)
      1. 인덱스를 통해서 임의의 레코드를 접근할 수 있는 파일
      2. 희소 인덱스 : 각 데이터 블록마다 한 개의 엔트리 가짐
      3. 밀집 인덱스 : 각 레코드마다 한 개의 엔트리 가짐
      4. SQL 인덱스 정의문
        1. Primary Key는 기본 인덱스 생성
        2. UNIQUE 애트리뷰트는 보조 인덱스 생성
        3. 기타 추가는 CREATE INDEX 사용
    4. 직접 파일(hash file)
  4. 인덱스를 결정하는데 도움이 되는 몇 가지 지침
    1. 지침 1: 기본 키는 클러스터링 인덱스를 정의할 훌륭한 후보
    2. 지침 2: 외래 키도 인덱스를 정의할 중요한 후보
    3. 지침 3: 한 애트리뷰트에 들어 있는 상이한 값들의 개수가 거의 전체 레코드 수와 비슷하고, 그 애트리뷰트가 동등 조건에 사용된다면 비 클러스터링 인덱스를 생성하는 것이 좋음
    4. 지침 4: 투플이 많이 들어 있는 릴레이션에서 대부분의 질의가 검색하는 투플이 2% ~ 4% 미만인 경우에는 인덱스를 생성
    5. 지침 5: 자주 갱신되는 애트리뷰트에는 인덱스를 정의하지 않는 것이 좋음
    6. 지침 6: 갱신이 빈번하게 이루어지는 릴레이션에는 인덱스를 많이 만드는 것을 피함
    7. 지침 7: 후보 키는 기본 키가 갖는 모든 특성을 마찬가지로 갖기 때문에 인덱스를 생성할 후보
    8. 지침 8: 인덱스는 화일의 레코드들을 충분히 분할할 수 있어야 함
    9. 지침 9: 정수형 애트리뷰트에 인덱스를 생성
    10. 지침 10: VARCHAR 애트리뷰트에는 인덱스를 만들지 않음
    11. 지침 11: 작은 화일에는 인덱스를 만들 필요가 없음
    12. 지침 12: 대량의 데이터를 삽입할 때는 모든 인덱스를 제거하고, 데이터 삽입이 끝난 후에 인덱스들을 다시 생성하는 것이 좋음
  5. 질의 튜닝을 위한 추가 지침
    1. DISTINCT절의 사용을 최소화하라
    2. GROUP BY절과 HAVING절의 사용을 최소화하라
    3. 임시 릴레이션의 사용을 피하라
    4. SELECT * 대신에 SELECT절에 애트리뷰트 이름들을 구체적으로 명시하라
error: Content is protected !!