투씨에스지 기술 블로그

Row Chaining & Row Migration 본문

Oracle/Admin

Row Chaining & Row Migration

TOCSG 2015.02.10 17:20

Row Chaining & Row Migration

 

 

< Row Chaining 란?  >

 

 행 데이타가 정상적으로 INSERT된 후 삭제작업이 발생하여 하나의 행이 삭제되고 해당블록에는  삭제된 행 크기만큼의 빈 공간이 생긴다. 새로운 행 데이타가 입력되면 빈 공간이 존재하는 블록에 데이타가 입력되고 공간부족 현상이 발생 되면 나머지 데이타가 새로운 블록에 입력된다. 이것을 행 이전, Row-Chaining 이라고 한다.

 

 

 

 

 < Row Migration 란? >

행 데이타영역에 사용자가 입력한 데이타들이 모두 입력되어 저장공간이 없는 경우 기존 데이타의 변경작업이 일어나면 변경에 의해 저장할 수 있는 공간이 없게된다.
이런 경우 오라클 서버는 변경할 수 없었던 행들을 모아 새로운 블록으로 이동시킨 후 변경작업 수행한다. 이것을 행 이주, Row-Migration 이라고 한다.

 

 

 

 

 < Row Chaining 과 Row Migration 의 비교 >

 

 구분 

Row Chaining

Row Migration 

정의

하나의 row를 하나의 블럭에 저장할 수 없어서 여러 블럭에 걸쳐서 저장하는 현상

update로 인하여 늘어나는 공간을 저장할 공간이 없어서 다른 블럭으로 row를 옮기는 현상

특성

initial row piece(행 조각)와 row pointer로 블럭 내에 저장

기존 블럭에는 migration되는 데이터의 row header와 블럭 주소값을 갖게되고, 새로운 블럭에는 migration되는 데이터가 저장됨

문제점

 row의 정보를 검색하기 위해 하나 이상의 데이터 블럭을 scan해야 하기 때문에 성능이 감소

migration된 row를 일기 전에 기존 블럭에서 헤더를 통해 migration된 row를 읽기 때문에 성능이 감소됨

해결책

• 블럭의 크기를 크게

• PCTFREE를 크게 설정
• 객체를 export하고 삭제한 후, import
• 객체를 migration하고 truncate

 

 

 

                          (평균행 크기   -  초기행 크기) * 100

*  PCTFREE =     ----------------------------------------

                                   평균행 크기

 

 

 

 

 

< Row Chaining & Migration Test >

 

1. Test 를 진행할 Table 생성

 

 

2. Table 에 Data 적재

 

...........

 

 

 

           

 

3. Chain된 Count 정보를 저장하기 위한 Table 생성

 

 

4. 통계정보 수집 후 Row Chain 확인

 

 

- 아무런 데이터 작업을 하지 않았기 때문에 Row-Chaining 이 발생하지 않음.

 

5. Row-Chaining 강제 발생

 

 

6. Row-Chaining 발생 후 통계정보 수집

 

 

- Chaining 이 발생한 Count 를 확인 할 수 있습니다.

 

7. Chaining 제거 작업

 

- 제거하기 위해 chain_tmp 라는 Table 을 생성하고 기존의 Data 적재.

 

 

 

- 기존의 통계정보가 저장되어 있는 chained_rows Table Truncate.

- chainig 을 제거한 chain_test Table 이 진짜로 chaining 이 제거됬는지 확인하기 위해 다시

  한번 통계정보 제거하기 위해 chain_tmp 라는 Table 을 생성하고 기존의 Data 적재.

- chained_row Table 을 통해 Row-Chaining 이 제거된 것을 확일 할 수 있다.

'Oracle > Admin' 카테고리의 다른 글

Oracle 유저 패스워드 만료시기 설정  (0) 2016.06.29
Row Chaining & Row Migration  (0) 2015.02.10
Shared Pool Fragmentation  (0) 2014.11.17
Oracle 필수 파일  (0) 2014.10.27
Oracle Database Architechture  (0) 2014.07.28
Listener 관리 방안  (0) 2014.06.11
0 Comments
댓글쓰기 폼