본문 바로가기

sql_tuning

Section2. 데이터베이스 블록(Database Block)의 이해

728x90
반응형

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

Database Block의 정의
- DB 데이터 검색과 저장의 가장 기본 단위 (8K, 16K, 32K, 64K)
    - 한번 만들면 변경 할 수 없음
- 모든 DB I/O는 DB Block 단위로 수행
- 보통 Block 당 평균 수십 개의 레코드가 들어갈 수 있는 크기로 구성
- 단 하나의 레코드를 읽을 지라도 최소한 1 Block 은 Access 해야 함

*백만 개의 Record를 가지는 두 개의 테이블이 있다. 검색 속도는 서로 동일한가?
    - 다를 수 있음.
    - T1 은 컬럼이 100개고 T2는 컬럼이 10개라면, T1의 면적이 훨씬 큼.
    - I/O 는 데이터베이스 블락 단위로 일어나며, I/O 횟수는 면적에 비례함
    - 따라서 T1 검색 속도가 훨씬 느림.

*백만 개의 Record를 가지고 컬럼 크기와 값도 서로 동일한 두개의 테이블이 있다. 
  검색 속도는 서로 동일한가?
    - 다를 수 있음.
    - 동일한 데이터가 들어 있어도, 하이워터마크(High Water Mark) 에 따라 달라진다.
    - 두 테이블이 논리적으로 같을지라도
      하이워터마크 때문에 segment 크기가 달라지면서 물리적으로 달라질 수 있다.
    - 클러스터링 팩터값이 다를 수 있음. (이후 강의에서 자세히 다룰 예정) 

728x90
반응형