본문 바로가기

오라클81

CH01.인덱스 원리와 활용 - 02. 인덱스 기본 원리 B*Tree 인덱스를 정상적으로 사용하려면 범위 스캔 시작지점을 찾기 위해 루트 블록부터 리프블록까지의 수직적 탐색 과정을 거쳐야 합니다. 만약 인덱스 선두 컬럼이 조건절에 사용되지 않으면 범위 스캔을 위한 시작점을 찾을 수 없어 옵티마이저는 인덱스 전체를 스캔하거나 테이블 전체를 스캔하는 방식을 선택합니다. 또한 인덱스 선투 컬럼이 조건절에 사용되어도 인덱스를 사용 못하거나 범위 스캔이 불가능한 경우가 있습니다. (1) 인덱스 사용이 불가능하거나 범위 스캔이 불가능한 경우 - 조건절 인덱스 컬럼의 가공.(FBI 정의 하지 않는 경우) select * from 업체 where substr(업체명,1,2) = ‘대한’ -부정형 비교 select * from 고객 where 직업 ‘학생’ -is not nu.. 2020. 2. 20.
CH01.인덱스 원리와 활용 - 01. 인덱스 구조 (1) 범위 스캔 테이블은 처음부터 끝까지 모든 레코드를 읽어야 완전한 결과집합을 얻을 수 있지만 인덱스는 키 컬럼 순으로 정렬돼 있기 때문에 특정 위치에서 스캔을 시작해 검색 조건에 일치하지 않는 값을 만나는 순간 멈출 수 있습니다. 이것이 범위 스캔(Range Scan)입니다. 테이블도 인덱스가 결합된 테이블인 IOT(index - organized table)는 특정 컬럼 순으로 정렬 상태를 유지하며 값을 입력하므로 범위 스캔이 가능합니다. 이를 제외한다면 일반적인 힙 구조 테이블(heap - organized table)에서 범위 스캔은 있을 수 없습니다. 아무리 정렬 상태가 유지되게 테이블의 데이터를 입력하더라도 옵티마이저는 그것을 신뢰하지 않고, Table Range Scan같은 실행계획을 수.. 2020. 2. 19.
06.I/O 효율화 원리 - 08. I/O 효율화 원리 애플리케이션 측면에서의 I/O 효율화 원리를 요약하면 아래와 같습니다 (1)필요한 최소 블록만 읽도록 쿼리 작성 데이터베이스 성능은 I/O효율에 달려있고, 이를 달성하려면 동일한 레코드를 반복적으로 읽지 않고, 필요한 최소 블록만 읽도록 쿼리를 작성해야 합니다. (2)최적의 옵티마이징 팩터 제공 전략적인 인덱스 구성 DBMS가 제공하는 다양한 기능 활용 옵티마이저 모드 설정 통계정보의 중요성 정리하면, 옵티마이저모드를 포함해 적절한 초기화 파라미터를 설정해 주고, 적절한 통계정보를 수집해주는 것이 중요합니다. 그 다음 전략적인 인덱스 구성을 필수로 뒷받침해주고 기타 다양한 DBMS기능들을 적극 활용해 옵티마이저가 최적의 선택을 할 수 있도록 수단을 제공해 주어야 합니다. (3) 필요하다면, 옵티마이저 힌.. 2020. 2. 15.
06.I/O 효율화 원리 - 07. Result 캐시 버퍼 캐시에 위치하지 않고 Shared Pool에 위치합니다. 오라클은 11g부터 한번 수행한 쿼리 또는 PL/SQL 함수의 결과값을 Result 캐시에 저장 해두능 기능을 제공합니다. 1.DML이 거의 발생하지 않는 테이블을 참조하면서 2.반복 수행요청이 많은 쿼리에 이 기능을 사용하면 I/O 발생량을 현격히 감소시킬 수 있습니다. Result 캐시 메모리는 다음 두 가지 캐시 영역으로 구성됩니다. SQL Query Result 캐시 : SQL 쿼리 결과를 저장 PL/SQL 함수 Result 캐시 : PL/SQL 함수 결과값을 저장 아래는 Result 캐시를 위해 추가된 파라미터들입니다.result_cache_max_size를 관리자가 직접 지정하지 않으면 ,아래 규칙에 따라 오라클이 자동으로 값을 할.. 2020. 2. 15.