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