[100일차] 오라클 데이터 베이스 저장구조

저요·2022년 12월 31일

2022 100th day challenge

목록 보기
97/97

오라클 데이터 베이스 저장구조

오라클 9I 이전에는 MSSM 방식으로, 공간에 대한 사이즈 할당을 거의 수동으로 관리했었다. 10G로 넘어오면서 ASSM 방식이 도입되면서 오라클에서 자동으로 알맞은 사이즈를 할당해주게 되었다.
데이터가 저장되는 논리적인 구조에 대해서는 크기가 작은 것부터 말하자면 BLOCK EXTENT, SEGMENT, TABLESPACE가 있다.

BLOCK

  • BLOCK은 데이터가 저장되는 가장 작은 공간이다.
  • BLOCK에는 테이블의 단위들이 ROW단위로 들어있다. 테이블의 컬럼 수가 굉장히 많으면 적은 수의 ROW가 한 BLOCK에 저장되고, 테이블의 컬럼 수가 적으면 많은 수의 ROW가 한 BLOCK에 저장이 된다.
  • BLOCK은 SELECT 할 때 IO를 해야하는 가장 기본적인 단위이다. 컬럼 하나를 SELECT하든 많은 컬럼은 SELECT하든, IO하는 BLOCK의 갯수는 동일한다.
  • DB_BLOCK_SIZE라는 파라미터로 BLOCK의 사이즈를 지정할 수 있다. (2K, 4K ...2의 N승으로 지정)

EXTENT

  • EXTENT 데이터베이스가 공간을 할당하는 가장 작은 단위이다. BLOCK 은 데이터가 저장되는 가장 작은 단위
  • EXTENT가 모여서 SEGMENT를 이룬다.
  • EXTENT 사이즈는 오라클에서 자동으로 할당해준다!(10G이상에서)

SEGMENT

  • SEGMENT는 저장공간을 사용하는 OBJECT라 생각하면 된다.
  • VIEW나 SYNONYM은 OBJECT이기는 하지만, 저장구조를 갖고있지 않기 때문에 SEGMENT는 아니다.

TABLE SAPCE

  • SAGMENT들을 담고 있는 거대한 컨테이너.

HWM(HIGH WATER MARK)

  • HWM 내가 이 BLOCK까지는 쓴 적이 있다고 표시를 해두는 책갈피라고 생각하면 된다.
  • 만약 HWM의 이전에 있던 데이터가 DELETE되어 지워지면, FREE LIST로 구멍이 뚫리게 된다. 하지만 HWM는 계속 그 자리에 있게 된다.
  • TABLE FULL SCAN을 한다면 HWM 아래에 있는 BLOCK들을 다 SCAN을 하는데 중간에 구멍이 뚫린 공간이 많다면 비효율이 발생할 수 있다.
  • HWM아래에 FREE BLOCK들이 너무 많이 생겨서 비효율이 발생한다면, TRUNCATE같은 명령어로 HWM을 초기화 시켜주면 된다.

참고

https://youtu.be/Z-xgqtUJDes

profile
웹개발

0개의 댓글