본문 바로가기

sql_tuning

Section2. Sequential 과 Random Access

728x90
반응형

[출처: 오라클 성능 분석과 인스턴스 튜닝 핵심 가이드]

Hard Disk 의 데이터 Access 원리


- 해당 데이터를 Access 하기 위해 Disk는 어떤 움직임을 해야 하는가?
    - Hard Disk 는 SpindleHead의 기계적인 움직임을 통해 데이터에 엑세스 함.
    - 이러한 기계적 움직임은 Hard Disk Access 속도의 많은 부분을 차지하고 있음.
    - 데이터의 Access랑 보다 주어진 데이터를 Access 하기 위한 기계적 움직임얼마나 많았는지가
       상대적으로 Hard Disk의 수행속도를 더 좌우함.
    - 따라서 자주 Access 해야 되는 Block을 이동해야 하는 Random I/O의 경우 Hard Disk의 수행 속도가 느려질 수 있음.

-> Sequential Access 의 경우, B->C 에서만 Head가 작게 왔다갔다 함.
-> Random Access 의 경우, B->D 라면 Head가 크게 왔다갔다 해야 함. 

 

I/O  Access 유형
- Sequential Access (순차 Scan)
    - 보조기억장치에 저장 된 파일로부터 정해진 순서대로 데이터를 순차적으로 검색함.
       순차 엑세스에서는 데이터들이 차례차례로 읽혀짐. 스캔 방식으로 동작함.
        - Table Full Scan: Multi 블록을 I/O 단위로 사용 가능, DB_FILE_MULTIBLOCK_READ_COUNT 로 설정(풀스캔 일때만 동작하는 파라미터).

- Random Access (임의 Access)
    - 어떤 파일 내에 있는 특정한 레코드를 찾을 때 다른 레코드를 순차적으로 읽지 않고 원하는 레코드만을 직접 엑세스.
       데이터를 빨리 검색 할 수 있는 액세스 방식.
    - 검색 될 레코드를 명시하기 위해서는 임의로 엑세스 하려는 레코드들은 그들과 관련 된 Key를 가져야 함. 
        - Index 를 경유한 Table Random Access: 1 블록이 I/O 단위 

 - 디스크 Access Time (Seek Time)
    - 데이터를 읽어 들이거나 기록하기 위해 디스크 드라이브의 판독/기록 헤드의 위치를 표면 위의 특정 트랙으로 이동시키는데 소요되는 시간. 

 

테이블 Access I/O 유형 
- 인덱스를 경유한 Table Random Access
   


    - 인덱스 스캔을 통해 알게 된 Rowid 값을 가지고 Table 을 Access 함.(Row id 는 테이블의 위치를 알 수 있는 고유의 값)
    - 인덱스를 통해 테이블을 Access 할 경우 테이블 Block Access 순서가 Random 이 되는 Random I/O 발생
    - 대부분의 OLTP 성 Application 은 Random I/O Access 유형

- Table Full Scan
   


    - 테이블은 인덱스를 경유하지 않을 경우 Segment의 처음 부터 끝까지 순차적으로 Full Scan 함.
    - 데이터를 읽는 양은 Random I/O 보다 많을 수 있으나 대용량의 데이터를 읽을 경우는 Random I/O 보다 훨씬 효율적.

728x90
반응형