"로우체이닝 로우마이그레이션"의 두 판 사이의 차이
DB CAFE
(→로우 체이닝) |
|||
9번째 줄: | 9번째 줄: | ||
== 로우 체이닝 == | == 로우 체이닝 == | ||
+ | # 1개 로우의 데이터 크기가 블록의 데이터 저장 공간보다 클때 발생 | ||
+ | # 데이터 크기가 블록의 데이터 저장공간보다 클때 1개 로우를 여러개의 조각으로 분리하고 각 조각을 다른 블록에 저장 | ||
== 로우 마이그레이션/체이닝 조회 == | == 로우 마이그레이션/체이닝 조회 == |
2021년 10월 21일 (목) 09:14 판
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
1 로우 마이그레이션[편집]
- 테이블은 PCTFREE를 설정해 블록에 빈 공간을 마련해두는 이유는 UPDATE 문 수행 등으로 인해 데이터가 변경되어 로우의 크기가 커질 수 있기 때문
- 데이터가 블록의 빈 공간에 들어갈 수 없을정도로 커지면, ‘로우 마이그레이션’ 이 발생
- 로우 마이그레이션이 발생하면, 변경으로 인해 증가한 데이터 뿐만 아니라 전체 로우의 데이터가 다른 블록으로 복사된다.
- 해당 로우의 위치를 갖고있는 인덱스 등의 모든 오브젝트를 변경해야함
- 원래의 블록에는 새로 복사된 위치의 포인터를 남김
- 로우 마이그레이션이 발생한 로우의 데이터를 읽어오기 위해서는 ‘로우의 포인터가 저장된 블록’과 ‘로우의 데이터가 저장된 블록’을 둘 다 읽어와야한다.
- 해결방안은, PCTFREE 를 좀더 크게 설정하고 로우 마이그레이션의 발생을 억제하는 것
2 로우 체이닝[편집]
- 1개 로우의 데이터 크기가 블록의 데이터 저장 공간보다 클때 발생
- 데이터 크기가 블록의 데이터 저장공간보다 클때 1개 로우를 여러개의 조각으로 분리하고 각 조각을 다른 블록에 저장