"엑사데이타 EXADATA"의 두 판 사이의 차이
DB CAFE
(→스마트스캔은 언제 수행되나?) |
(→스토리지 인덱스는 언제 생성되나>) |
||
(같은 사용자의 중간 판 3개는 보이지 않습니다) | |||
30번째 줄: | 30번째 줄: | ||
## 파티션에 기반한 파티션 푸루닝(Partition Pruning) | ## 파티션에 기반한 파티션 푸루닝(Partition Pruning) | ||
## 함수 오프로딩 가능(V$SQLFN_METADATA 확인) | ## 함수 오프로딩 가능(V$SQLFN_METADATA 확인) | ||
+ | |||
+ | ==== 스토리지 인덱스 ==== | ||
+ | # 기존 인덱스는 읽을 필요가 있는 블록을 찾지만 , 스토리지 인덱스는 읽지 않아도 되는 블럭을 제거하는 목적으로 사용 | ||
+ | # 이를 통해서 읽어야할 블럭의양을 제거하여 대용량 조회의 성능조회의 성능을 향상시킴 | ||
+ | ===== 스토리지 인덱스란 ? ===== | ||
+ | # 스토리지 서버 메모리에 테이블의 데이터에 대한 요약정보 인덱스(1M단위 Min/Max값)을 유지 하면서 | ||
+ | # 데이터가 인덱스 범위에 속하지 않을 경우 해당블록의 스캔을 하지 않음으로써,불필요한 Disk I/O를 줄이기 위한 목적으로 설계된 스토리지 서버 기능 | ||
+ | ===== 스토리지 인덱스 구조 ===== | ||
+ | # 테이블을 1메가 단위의 스토리지 리젼(Storage Region)으로 나누고 , 스토리지 리젼내 데이터들의 최대/최소값과 널(Null) 유무정보를 저장 | ||
+ | # 테이블 하나에 최대 8개 (최신버전은 24)컬럼까지 생성 될수 있음. | ||
+ | ===== 스토리지 인덱스는 언제 생성되나 ?===== | ||
+ | # 해당컬럼을 포함한 스마트스캔 질의가 처음 실행될때 엑사데이터에 의해 자동으로 생성 됨 | ||
+ | # 생성이후 데이터가 변경될때 자동으로 변경됨. | ||
+ | # 메모리에 저장되기때문에 셀서버(Cell Server)가 종료되면 자동으로 삭제 되고 다시 해당컬럼을 참조하는 스마트 스캔 질의가 처음으로 수행될때 자동으로 생성 | ||
+ | |||
+ | ===== 스토리지 인덱스 사용조건 ===== | ||
+ | # 스마트스캔이 수행될 경우에만 사용됨, 최소 1개 이상의 Where절 조건이 명시되어야함 | ||
+ | # 연산자(=,<,>,>=,<=,IN,Between ,Is null ,Is Not null)를 사용하여 조건을 비교하는경우 | ||
+ | # 조인 수행전 스토리지 인덱스를 통한 필터링수행과 Where절의 바인드변수 또는 다중컬럼으로 조건이 있는 경우 사용됨. | ||
+ | ==== 엑사데이타 활용을 위한 조건 ==== | ||
+ | ===== 스마트스캔을 위한 조건 ===== | ||
+ | # 테이블 엑세스시 Full Table Scan을위한 FULL힌트 사용, 큰 테이블인 경우 PARALLEL 힌트를 같이 사용 | ||
+ | ## INDEX FAST FULL Scan 포함 | ||
+ | # 필요한 컬럼만 기술 | ||
+ | # 필요한 로우만 선택하기위해 WHERE 절에 조건 기술 | ||
+ | ===== 스마트스캔이 되지 않는 경우 ===== | ||
+ | # Index Range Scan이 되는 경우 | ||
+ | # 한번에 한행씩 처리토록 하는 절차형 쿼리 | ||
+ | # ROWID 순서로 가져오는 스캔 | ||
+ | # 255개 이상 컬럼 엑세스 | ||
+ | # LOB,LONG 형 컬럼을 SELECT 하는 경우 | ||
+ | # Serial DML인 경우 | ||
+ | ===== 스토리지 인덱스를 위한 조건 ===== | ||
+ | # 스마트스캔을 하는 구문(FTS,Direct Path Read) | ||
+ | # WHERE 절 기술 | ||
+ | # 연산자(=,<,>,>=,<=,IN,Between ,Is null ,Is Not null) 사용 | ||
+ | ===== 스토리지 인덱스가 되지 않는 경우 ===== | ||
+ | # LOB,Long형 컬럼 | ||
+ | # != 부정형 비교 연산자 | ||
+ | # %와일드카드 사용조건 | ||
+ | ===== 스마트 스캔 관련 힌트 ===== | ||
+ | # FULL | ||
+ | # APPEND | ||
+ | # PARALLEL | ||
+ | # CARDINALITY | ||
+ | [[category:oracle]] |
2024년 3월 20일 (수) 15:33 기준 최신판
thumb_up 추천메뉴 바로가기
- DBA { Oracle DBA 명령어 > DBA 초급 과정 > DBA 고급 과정 }
- 튜닝 { 오라클 튜닝 목록 }
- 모델링 { 데이터 모델링 가이드 }
1 엑사데이타 EXADATA[편집]
1.1 엑사데이타 특징[편집]
- Direct Path Read 방식으로 Full Table Scan 을 유도해서 스마트스캔,스토리지 인덱스 기능을 활용하여 성능향상
1.1.1 스마트스캔[편집]
- 셀서버(Cell Server)가 이해할수 있는 "iDB" 프로토콜을 사용하여 , 셀서버가 필요한 행을 선별하여 쿼리를 수행
- 스마트스캔의 가장 큰목적은 디비서버로 보내는 양을 최소화 시키는것 (오프로딩,스마트스캔 수행)
1.1.1.1 스마트스캔 동작 방식[편집]
- 질의실행
- 스마트스캔 활성화하여 셀로 보냄
- 스마트스캔이 1테라바이트의 테이블 에서 요구사항에 맞는 컬럼과 로우를 인식
- 디비서버로 선별된 로우 2메가 데이터가 전달됨
- 모든 셀로부터 전달되어진 결과집합을 하나로 통합
- 해당결과 전달
1.1.1.2 선별된 로우만 디비서버(PGA)로 전송 방식[편집]
- SELECT 절을 분석후 ==> 필요한 컬럼만
- WHERE 절을 분석후 ==> 필요한 로우만
- 스토리지 인덱스를 통한 ==> 불필요한 I/O 제거
- 조인작업시 불름필터를 통한 ==> 조인대상 범위를 줄여 최적화
- 파티션에 기반한 ==> 필요한 파티션만
1.1.1.3 스마트스캔은 언제 수행되나?[편집]
- 엑세데이터 스토리지(ASM기반)에서 Direct Path Read(SGA를 거치지 않고 PGA로 직접로드) 방식으로 Full Scan(또는 Index Fast Full Scan)이 수행 되어야 함
- 조회 테이블은 전체 컬럼이 아니며 WHERE 조건이 기술되어야 함
- Direct Path Read는 주로 병렬처리수행시 동작하므로 주로 힌트를 사용하여 병렬처리로 수행하여야 함
- 아래와 같은 필터링 및 최적화 기법으로 선별된 로우만 디비(PGA)로 전송
- Column Projection : Select절을 분석하여 필요한 컬럼만 반환(Select 컬럼 + Join 컬럼만 )
- Predicate Filtering : Where절을 분석하여 필요한 로우만 반환
- Join Filtering : 블름필터를 통하여 조인 대상 최적화
- 스토리지 인덱스를 통하여 불필요한 I/O 제거
- 파티션에 기반한 파티션 푸루닝(Partition Pruning)
- 함수 오프로딩 가능(V$SQLFN_METADATA 확인)
1.1.2 스토리지 인덱스[편집]
- 기존 인덱스는 읽을 필요가 있는 블록을 찾지만 , 스토리지 인덱스는 읽지 않아도 되는 블럭을 제거하는 목적으로 사용
- 이를 통해서 읽어야할 블럭의양을 제거하여 대용량 조회의 성능조회의 성능을 향상시킴
1.1.2.1 스토리지 인덱스란 ?[편집]
- 스토리지 서버 메모리에 테이블의 데이터에 대한 요약정보 인덱스(1M단위 Min/Max값)을 유지 하면서
- 데이터가 인덱스 범위에 속하지 않을 경우 해당블록의 스캔을 하지 않음으로써,불필요한 Disk I/O를 줄이기 위한 목적으로 설계된 스토리지 서버 기능
1.1.2.2 스토리지 인덱스 구조[편집]
- 테이블을 1메가 단위의 스토리지 리젼(Storage Region)으로 나누고 , 스토리지 리젼내 데이터들의 최대/최소값과 널(Null) 유무정보를 저장
- 테이블 하나에 최대 8개 (최신버전은 24)컬럼까지 생성 될수 있음.
1.1.2.3 스토리지 인덱스는 언제 생성되나 ?[편집]
- 해당컬럼을 포함한 스마트스캔 질의가 처음 실행될때 엑사데이터에 의해 자동으로 생성 됨
- 생성이후 데이터가 변경될때 자동으로 변경됨.
- 메모리에 저장되기때문에 셀서버(Cell Server)가 종료되면 자동으로 삭제 되고 다시 해당컬럼을 참조하는 스마트 스캔 질의가 처음으로 수행될때 자동으로 생성
1.1.2.4 스토리지 인덱스 사용조건[편집]
- 스마트스캔이 수행될 경우에만 사용됨, 최소 1개 이상의 Where절 조건이 명시되어야함
- 연산자(=,<,>,>=,<=,IN,Between ,Is null ,Is Not null)를 사용하여 조건을 비교하는경우
- 조인 수행전 스토리지 인덱스를 통한 필터링수행과 Where절의 바인드변수 또는 다중컬럼으로 조건이 있는 경우 사용됨.
1.1.3 엑사데이타 활용을 위한 조건[편집]
1.1.3.1 스마트스캔을 위한 조건[편집]
- 테이블 엑세스시 Full Table Scan을위한 FULL힌트 사용, 큰 테이블인 경우 PARALLEL 힌트를 같이 사용
- INDEX FAST FULL Scan 포함
- 필요한 컬럼만 기술
- 필요한 로우만 선택하기위해 WHERE 절에 조건 기술
1.1.3.2 스마트스캔이 되지 않는 경우[편집]
- Index Range Scan이 되는 경우
- 한번에 한행씩 처리토록 하는 절차형 쿼리
- ROWID 순서로 가져오는 스캔
- 255개 이상 컬럼 엑세스
- LOB,LONG 형 컬럼을 SELECT 하는 경우
- Serial DML인 경우
1.1.3.3 스토리지 인덱스를 위한 조건[편집]
- 스마트스캔을 하는 구문(FTS,Direct Path Read)
- WHERE 절 기술
- 연산자(=,<,>,>=,<=,IN,Between ,Is null ,Is Not null) 사용
1.1.3.4 스토리지 인덱스가 되지 않는 경우[편집]
- LOB,Long형 컬럼
- != 부정형 비교 연산자
- %와일드카드 사용조건
1.1.3.5 스마트 스캔 관련 힌트[편집]
- FULL
- APPEND
- PARALLEL
- CARDINALITY