DB 관리 TIP 24

결합인덱스 선택도

1. 선택도(Selectivity) : 전체 레코드 중에서 조건절에 의해 선택되는 레코드 비율 카디널리티 = 선택도 * 총레코드 수 인덱스 선택도란 ? 인덱스 컬럼을 모두 '='로 조회할때 평균적으로 선택되는 비율을 의미 선택도가 높은(카디널리티가 높은) 인덱스는 생성해봐야 테이블 액세스만 많이 발생함 (만든의미가 없음) 인덱스를 생성할때는 반드시~ 선택도 카디널리티 확인!! * 카디널리티 = 1 : 해당컬럼 '=' 조건으로 조회 시 평균 1건 조회됨을 의미 --카드널리티 조회 쿼리 SELECT COUNT(*) AS NDV, MAX(CNT) AS MAX_CARD, MIN(CNT) MN_CARD, AVG(CNT) AS AVG_CARD FROM ( SELECT ORD_DT, SHOP_NO, COUNT(*) ..

DB 관리 TIP 2021.12.16

[ORACLE] ROWID 특징

오라클에서만 사용 가능하다는 ROWID - ROWID : 데이터의 위치 값 - ROWID는 인덱스에 저장되어 있음(인덱스에서 원하는 값을 찾은 후 ROWID를 통해 테이블에 접근) - ROWID를 알고 있으면 인덱스를 통하지 않고도 바로 테이블로 접근가능 - ROWID 순으로 정렬하면 같은 블록끼리 모여 있어 버퍼피닝효과를 만들어 낼수 있음 ROWID 구성 데이터오브젝트(6자리)+데이터파일번호(3자리)+블록번호(6자리)+로우번호(3자리)

DB 관리 TIP 2021.07.04

[ORACEL] 인덱스 특징

- 인덱스를 저장하는 단위는 블록. 인덱스는 지정된 컬럼의 값과 데이터의 원본을 찾아갈 수 있는 주소(ROWID)로 구성 - 인덱스 구성할 때 컬럼수와 데이터 사이즈마다 인덱스 블록에 저장되는 건수는 다름 - 오라클에서는 컬럼이 NULL 인경우 인덱스 생성하지 않음 (실제 데이터가 모두 NULL이 아니어도 해당 컬럼이 NULL을 허용하는 경우 다른 실행계획이 나올 수 있음) - 복합인덱스라면 모든 컬럼이 NULL이 아니면 인덱스는 생성됨 왜? 인덱스 활용을 못하고 TABLE FULL 스캔한 이유는 컬럼에 NOT NULL이 아니면 오라클은 컬럼에 NULL이 있다고 판단 인덱스 컬럼에 NULL 데이터가 있으면 인덱스 이용해 전체 데이터를 가져올수 없다고 판단하여 인덱스로 정렬을 대신하지 못함. 컬럼을 NOT..

DB 관리 TIP 2021.07.04

[ORACLE]NL조인 특징

NL 조인 특징 - oracle은 블록단위로 I/O를 수행하며, 하나의 레코드 읽기위해 한블록을 읽어야함 메모리에서 읽더라도 한건이 아닌 한블록을 읽기때문에 항상 비효율이 존재 - Random 액세스 위주의 조인방식(아무리 인덱스구성이 완벽하더라도 대량의 데이터 조인할때 매우 비효율적임) - 조인을 한 레코드씩 순차적으로 진행 ( Random 액세스방식으로 데이터처리 시 매우 치명적인 한계, 반대로 부분범위처리에서는 극적인 응답속도를 낼 수 있음.) - 먼저 액세스되는 테이블의 처리 범위에 의해 전체 일량이 결정 - 다른조인에 비해 인덱스 구성 전략이 특히 중요 ※ NL 조인은 소량의 데이터를 주로 처리하거나 부분범위처리가 가능한 온라인 트랜잭션 환경에 적합한 조인방식

DB 관리 TIP 2021.07.02

[ORACLE] INDEX 튜닝정리 I/O 효율

1. index scan : 인덱스는 많은 데이터에서 소량의 데이터 찾을 때 full table scan : 많은 데이터에서 많은데이터 가져오는 때 인덱스 컬럼값이 많다--> 한블럭에 담을수 있는 인덱스 양은 작아짐(복합인덱스) 인덱스 컬럼값이 작다--> 한블럭에 담을수 있는 인덱스 양이 많아짐 소량의 데이터에 인덱스를 만들면 root=leaf 수도 있음 2. 인덱스탐색원리 이진트리 2의 N제곱만큼 경우의 수 3. 인덱스는 정렬된 상태로 저장 되어 있으므로, 먼저 찾은 데이터를 먼저 결과집합으로 만들기 때문에, 인덱스가 저장된 그대로 결과 데이터도 정렬되어 나옴(정렬에 대한 부하를 인덱스 통해서 없앨 수 있음). 4.블로단위 I/O 5.sequential Access와 Random Access이해 1) ..

DB 관리 TIP 2021.06.21

[SPLEX]이중화 대상 테이블 추가 쉐어플렉스

- 쉐어플렉스에 이중화 대상 테이블 추가 구성 1. 동기화 중인 config 파일 (상태가 active 인 파일이 현재 운영에 적용된 config 파일) sp_ctrl (splex-source-vip:2100)> list config File Name State Datasource ---------------------- ---------- --------------- ORA_config Inactive o.SOURCE_SID Last Modified At: 19-Feb-20 12:51 Size: 123 config_20190102 Active o.SPLEX_ORADB Last Modified At: 12-Nov20 11:23 Size: 234 Internal Name:.conf.40 2. config ..

DB 관리 TIP 2021.06.17

[ORACLE] dbms_xplan.display_cursor 실행계획 확인

1. 아래 뷰 조회 권한 필수(sys계정으로 select 권한 부여) SQL> grant select ON v_$SESSION TO SCOTT; SQL> grant select ON V_$SQL_PLAN TO SCOTT; SQL> grant select on v_$SQL_PLAN_STATISTICS_ALL TO SCOTT; 2. 힌트 사용하여 쿼리 실행 SELECT /*+ gather_plan_statistics */ * FROM (SELECT * FROM emp WHERE empno=7902); *실행쿼리 결과완료되어야 함(실제 실행된 플랜을 볼려면~완료필수) 3. 직전 쿼리 실행 plan 확인 SELECT * FROM table(dbms_xplan.display_cursor(NULL,NULL,'ADV..

DB 관리 TIP 2021.06.14
728x90
반응형
LIST