사용자 도구

사이트 도구


dbms:oracle:concept:tablesizeanalyze

문서의 이전 판입니다!


TABLE 사용량 분석

해당 Table에 할당되어 있는 크기 측정하는 방법

  1. USER_SEGMENTS 라는 Dictionary View에서 확인할 수 있다.
  2. 점유용량확인하는 방법이다.
    SELECT SEGMENT_NAME, BYTES FROM USER_SEGMENTS WHERE SEGMENT_TYPE='TABLE'

High Water Mark 측정

  1. Table에 공간할당은 되었으나 아직 (전혀) 사용되지 않는 공간을 제외한 실제 사용되고 있는 공간을 확인하고자 하는 방법이다.
  2. 즉, High Water Mark(HWM) 아래의 공간을 측정하는 것이다.

측정방법

  1. 해당 Table을 Analyze 한다.
     yze TABLE <table_name> compute statistics; 
  2. 해당 Table의 blocks를 구한다.
     SELECT blocks FROM dba_tables WHERE TABLE_NAME ='<table_name>'; 

    blocks + 1(segment header block) : 해당 Table 이 사용중인 database block count

  3. 위의 계산에는 사용된 후 delete에 의해 현재 완전히 비어 있는 block도 사용하고 있는 block으로 인식하므로
    완전히 비어 있는 block을 제거하기 위해서는 아래의 결과값을 빼주면 된다.
    1. rowid는 다음과 같이 구성되어 있다.
      object fil block row  
      ------ --- ------ ---  
      AAABPW AAF AAAAv1 AAA
    2. 따라서 아래의 Query의 결과값 빼주면 된다.
      HWM 아래 할당은 되었지만 완전히 비어 있는 block을 빼주면, 조금이라도 사용된 block count만 구할 수 있다.
      SELECT COUNT(1)
      FROM (SELECT SUBSTR(ROWID,1,15) FROM <table_name> GROUP BY SUBSTR(ROWID,1,15) );
dbms/oracle/concept/tablesizeanalyze.1202921205.txt.gz · 마지막으로 수정됨: 2008/02/14 01:46 저자 starlits