본문 바로가기

IT468

CH01.인덱스 원리와 활용 - 03. 다양한 인덱스 스캔 방식 (1) Index Range Scan 인덱스 루트 블록에서 리프 블록까지 수직적으로 탐색한 후에 리프 블록을 필요한 범위만 스캔하는 방식입니다. B*Tree 인덱스의 가장 일반적이고 정상적인 형태의 인덱스 방식이라고 할 수 있습니다. 대개 인덱스가 사용되는 실행계획을 보면 SQL에 문제가 없다고 판단할 수 있지만 실행계획 상에 Index Range Scan이 나타난다고 해서 항상 빠른 속도를 보장하는 것은 아닙니다. 인덱스를 스캔하는 범위(Range)를 얼마만큼 줄일 수 있느냐, 그리고 테이블로 액세스하는 횟수를 얼마만큼 줄일 수 있느냐가 관건이며, 이는 인덱스 설계와 SQL튜닝의 핵심 원리 중 하나입니다. Index Range Scan이 가능하게 하려면 인덱스를 구성하는 선두 컬럼이 조건절에 사용되어야.. 2020. 2. 23.
권한 부여 삭제(Grant)와 with admin option, with grant option Test 목적 1.지원 가능한 대상 ( 유저 등) 프로시저도 가능한가? yes grant execute on procedure_name to 유저명 으로 사용가능합니다. 2.grant option으로 권한 부여 후 다시 권한 부여 A -> B -> C 에서 A -> B 권한 revoke 시 (grant option 미사용 ) B -> C 가능한지? 결론 : with grant option으로 부여한 권한은 A -> B 회수 시 B -> C 도 자동 회수됩니다. with admin option은 자동 회수 안됨. TEST With Grant Option 1.유저생성 SCOTT = A 로 보고 진행하겠습니다. SYS@ysbae> create user b identified by b account unlock.. 2020. 2. 21.
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.