[Database] Oracle Access Path

HyunDong Lee·2022년 6월 22일
0

Database

목록 보기
2/3

Access Path

오라클이 데이터에 도달할 수 있는 방법

  • 전체 스캔
  • 다양한 종류의 인덱스
  • 해시 또는 rowid에 의해 유도된 액세스
  • 각 액세스 경로의 쓰임새는 서로 다르므로 모든 액세스 경로가 좋고 나쁨이 없이 모두 유용하다.

Table full scan

  • 데이터를 얻기 위해 모든 블록을 순차적으로 읽음. 또한 멀티블록으로 읽음.
  • Multi block i/o :오라클은 한번의 io호출로 한개가 아닌 N개의 블록을 읽음.

RowId access

  • rowid
    - 데이터의 물리적인 주소로 파일에 대한 행, 블록, 그리고 블록의 행에 관한 정보를 가지고 있음
  • 특정행에 도달하는 가장 빠른 방법

RowId 범위

  • RowId 범위를 사용하면 하나의 테이블에 대한 모든 작업을 병렬로 처리가능
  • 각 프로그램이 하나의 테이블에 대해서 물ㄹ리적으로 뭉쳐있는 데이터에 대하여 수행되도록 보장하기 때문
  • 각 프로그램이 같은 공유 디스크 리소스로 다투지 않음.

Index Scan

  • root :인덱스의 다음 레벨을 가리키는 엔트리 포함
  • branch :인덱스의 다음 레벨을 가리키는 엔트리 포함
  • leaf :테이블의 행을 가리키는 인덱스 엔트리를 포함. 양방향 linked list로 연결

Index unique scan

  • unique index에서는 데이터가 오직 인덱스 키 값에 따라 정렬되어 있음.

Index Range scan

  • 행이 하나도 반환됮 않거나 하나 이상의 행이 반환될 수 있다.
  • 일반적으로 인덱스는 오름차순으로 데이터를 읽지만 인덱스를 거꾸로 읽어야 할지라도 다시 정렬하거나 하지않고 인덱스 뒤에서부터 시작하여 읽을 수 있다.

Index skip scan

  • 이름이 의미하는 것과는 달리 인덱스 구조의 모든 블록을 읽지는 않는다.
  • 인덱스 모든 잎 블록을 처리하지만 첫번째 잎블록을 찾을 때 까지만 가지블록을 처리한다.
  • 잎 블록은 가지블록을 통해서 도달되나, 현재의 위치가 잎블록일 경우 포인터를 따라가기만 해도 다음블록에 도달할 수 있으므로 데이터를 앞뒤로 순회할 수 있다.
  • 선행 칼럼이 입력되지 않은 경우 선행 칼럼의 개별 값 별로 모두 탐색하여 검색하는 방법

Index fast full scan

  • 내부 가지블록을 포함하여 인덱스 구조의 모든 블록을 읽는다.
  • 테이블 전체 스캔과 마찬가지로 다중 블록읽기를 사용한다.
  • 데이터를 정렬된 순서대로 검색하지 않는다.
  • 쿼리가 인덱스의 대상이 열만을 참조하고 이 인덱스에 빠른 인덱스 전체 스캔을 적용함으로써 테이블의 전체 스캔을 피할 수 있는 경우에 사용된다.
  • 이런 유형의 인덱스 스캔으로부터 반환된 데이터는 정렬된 상태가 아님.

0개의 댓글