본문 바로가기

스터디69

CH01. 인덱스 원리와 활용 - 08. 인덱스 설계 SQL 각각을 위해 최적화된 인덱스를 모두 생성할 수 있다면 SQL튜닝과 인덱스 설계만큼 쉬운 것도 없습니다. 하지만 그런식으로 인덱스를 생성하다 보면 테이블마다 수십 개씩 달릴 것이고 관리비용뿐 아니라 시스템 부하를 가중시키는 원인이 됩니다. 인덱스 설계가 어려운 이유가 여기에 있으며, 시스템 전체를 바라보는 시각에서 전략적으로 접근하려는 노력이 중요합니다. (1) 가장 중요한 두 가지 선택 기준 인덱스 스캔 방식에 여러 가지가 있지만 가장 정상적이고 일반적인 것은 Index Range Scan입니다. 그리고 이를 위해서는 인덱스 선두 컬럼이 조건절에 반드시 사용되어야 합니다. 따라서 결합 인덱스를 구성할 때 첫 번째 기준은 조건절에 항상 사용되거나, 적어도 자주 사용되는 컬럼들을 선정하는 것입니다. .. 2020. 3. 8.
CH01. 인덱스 원리와 활용 - 07. 인덱스 스캔효율 Sequential 액세스는 레코드간 논리적 또는 물리적인 순서를 따라 차례대로 읽어 나가는 방식을 말합니다. Random 액세스는 레코드간 논리적, 물리적인 순서를 따르지 않고 한 건을 읽기 위해 한 블록씩 접근하는 방식을 말합니다. I/O튜닝의 핵심원리는 아래와 같습니다. - Sequential 액세스의 선택도를 높이고 Random 액세스의 발생량을 줄입니다. 이번 장은 테이블을 액세스하기 전 인덱스를 Sequential 방식으로 스캔하는 단계에서 발생하는 비효율 해소 원리를 다룹니다. 일반적인 의미에서의 선택도는 전체 레코드 중에서 조건절에 의해 선택되는 비율을 말합니다. -유효 인덱스 선택도 : 전체 인덱스 레코드 중에서 조건절을 만족하는 레코드를 찾기 위해 스캔할 것으로 예상되는 비율(%) -유.. 2020. 3. 5.
CH1. 인덱스 원리와 활용 - 06. IOT,클러스터 테이블 활용 오라클은 테이블을 인덱스 구조로 생성할 수 있는 IOT (Index Organized Table)라고 부르는 기능을 제공합니다. create table [테이블명] (a number primary key, ...) organization index; 위와 같은 구문을 사용해서 생성할 수 있습니다. IOT 장점 & 단점 장점 인위적으로 클러스터링 팩터를 좋게 만드는 방법중 하나 Random 액세스가 아닌 Sequential 방식으로 데이터를 액세스. 넓은 범위 액세스 시 유리 선두 컬럼이 ‘=‘조건이 아니면 조회 대상 레코드들이 서로 흩어져 많은 스캔을 유발하지만 ,적어도 테이블 Random 액세느는 발생하지 않아 빠른 성능 제공 가능 PK인덱스를 위한 별도의 세그먼트를 생성하지 않아도 됨 단점 인덱스 분.. 2020. 3. 1.
CH01.인덱스 원리와 활용 - 05. 테이블 Random 액세스 최소화 튜닝 (1)인덱스 컬럼추가 기존에 사용하던 인덱스에 컬럼을 추가하는 것만으로도 성능향상에 큰 영향을 미칠 수 있습니다. 위 SQL을 위해 서비스번호 하나로 구성된 단일 컬럼인덱스 로밍렌탈_N2가 사용됐는데 테이블을 액세스 하는 단계에서만 265,957(=266968-1011)개의 블록 I/O가 발생했고 이는 전체 I/O의99.6퍼를 차지하는 수치입니다. 수행시간도 49초가 걸리고 있습니다. 266,476번의 테이블을 방문하는 동안 블록 I/O가 265,957개 발생한 것을 보면, 인덱스 클러스터링 팩터가 안좋은 것일 수 도 있습니다. 이 경우에는 테이블 Reorg하지 않는 한 어쩔 수 없습니다. 여기서 문제는 테이블을 총 266,476번 방문해지만 최종 결과집합에서는 1,909건 밖에 되지 않는다는 것입니다... 2020. 2. 28.