오라클 인덱스 리빌드 시간 - olakeul indegseu libildeu sigan

정확한 시간 측정은 무조건 테스트 밖에 없습니다.

테스트 배드 또는 백업 환경을 구축하시고 인덱스를 생성하시고 시간을 측정하시기 바랍니다.

아래 표를 참고 하시고 인덱스 관련 작업은 복구 모델을 단순으로 변경하여 작업하세요.

http://msdn.microsoft.com/ko-kr/library/ms191484.aspx

인덱스 추가시 인덱스 리빌드 작업은 경우에 따라 다릅니다.

CL FACTOR 가 안좋다고 가정하면,

HEAP + NC 인덱스 추가라면 HEAP 을 REORG 하고 NC 인덱스를 추가하는 것이 좋습니다.

-> HEAP REORG 는 NC 인덱스 순으로 정렬하여 테이블을 재생성하는 것을 말합니다. ALTER INDEX REORGANIZE 가 아닙니다.
CL IDX + NC 인덱스 추가라면 CL IDX REBUILD 하고 인덱스를 추가하는 것이 좋으며,

HEAP + CL IDX 라면 추가 REBUILD 작업 필요 없습니다.

CL FACTOR 는 아래 URL 을 참고 하세요.

http://www.gurubee.net/display/CORE/Clustering+Factor

�������

Q.��ġ�۾��� insert �ð��� 4�ð� �ɸ��ϴ�.. �ذ� �����..

���� ��ġ�� ���� ���̺��� �Ϸ翡 �� 1,558,000�� ������ ���µ� ,

�������� ���� ��� ���ϱ޼������� �þ�ϴ�.

Insert �ð��� �� 4�ð� ���� �ҿ�˴ϴ�.

�׸��� ���̺��� �����Ǿ� �ִ� �ε����� ������ 9�� �̰� , �ε����� ���� �ɷ� �־ �׸�ŭ ��ġ �ð��� ���� �ɸ��ϴ�.

�׷��� Index�� disable ��Ű�� �����͸� insert �� ��, �ٽ� index�� rebuild �ϴ� ������� ���� �غ����� �׽����� �غ��Ҵ��� , index rebuild �ð��� ����ġ �ʰ� �ɸ�������.

�̷��� � ����� ����ؾ� �ϳ���?

A ��ġ�۾��� insert �ð��� 4�ð� �ɸ��ϴ�.. �ذ� �����..

150���� insert�� 4�ð��� �ɸ��ٴ� ���� �ʹ� ������ ���׿�.

�켱 2���� ������� tuning�� �ϽǼ� ���� ���Դϴ�.

1. System Tuning
- undo, redo log file�� ��ġ�� �ش� table, index�� �ִ� tablespace�� I/O��
�л��� �� �Ǿ����� Ȯ�� �ϼ���. �̸� �л���Ѿ� �մϴ�.

- insert�۾� ���� 4�ð������� redo log file�� switch �ð��� Ȯ���ϼ���,
�̸� Ȯ���ϴ� ����� v$loghist view�� ��ȸ �ϰų� alert.log�� switch �ð�
�� ���̸� Ȯ���Ͻø� �˴ϴ�.

���� 1~2�� ���� switch�� �ȴٸ�, redo logfile�� ũ�⸦ �÷��� �մϴ�.
�ʹ� ���� �߻��ϴ� switch�� db cache�� checkpointing�� �߻����� DBMS��
������ ���ڰ� �մϴ�. redo log file�� ũ��� 1G ���� ũ�� ����
����ϴ� ���� �����ϴ�.

- 150������ 4�ð� ���� �ִ´ٸ�.. �Ƹ��� system�� resource�� �����ҵ� �ϳ׿�.
cpu, memory, I/O���� Ȯ���Ͽ�, �������� Ȯ���Ͻð�, I/O�� �л�, cpu�� ��������
������� �ؾ� �ҵ� �մϴ�.

2. Object Tuning
- �Ϸ翡 150������ insert�Ǵ� table�� �翬�� partitioning�� �ؾ� �մϴ�.
insert�Ҷ� �������� object�� ũ�Ⱑ ũ�� insert�� �������� ������.
1�����̳� 1�� ������ partitioning�� �ϰ� �Ǹ� ȿ���� ���� ������ �մϴ�.

- ������ ����Ÿ�� �󸶳� �ִ��Ŀ� ���� �ٸ������� �뷮�� ����Ÿ�� insert�Ҷ�����
index�� disable�ϰ� insert�� rebuild�ϴ� ���� ������ ����Դϴ�. ������ ����Ÿ
�� �ʹ� ���� ��쿡�� ��¿�� ��������.

�̶� index rebuild�ÿ��� parallel option(cpu*2��)�� �ֽð�, nologging option��
�����Ͽ� rebuild������ ������ �Ҽ� �����ϴ�.

�����Ͻ� ������ ������ ��Ȯġ �ʾƼ� �뷫���� ������ �帳�ϴ�. �����Ͻñ�...

Visit and share your Know-how
����Ŭ ���� �ذ� Ŭ�� :
http://www.dbguide.net/@error

A ��ġ�۾��� insert �ð��� 4�ð� �ɸ��ϴ�.. �ذ� �����..

�� �������� ...
�ϴ� 9�� �ε����� ���� �ʿ俩�� �� �ߺ��Ǵ� ���� ������ üũ�� �ʿ��� �� �մϴ�.
���� ������ ���ٸ�...
insert�۾��� array insert �۾��� �ϴ� ���� �ǰ� �մϴ�.
�׸��� index rebuild�ÿ��� parallel/ nologging �ɼ��� Ȱ���ϴ� ����� ����?
���������� ��Ƽ�Ŵ� �۾��� �����ϴ� �͵� ���� ����ϵ��մϴ�.
local ��Ƽ�� �ε����� rebuild �ϸ� �ǹǷ� �ӵ� ����� �� �� �����ϴ�.

���������� �׽�Ʈ �غ��ô°��� ���� �� �����ϴ�.

오라클 인덱스 리빌드 시간 - olakeul indegseu libildeu sigan

인덱스는 트리 구조를 가지고 있으며 수정, 삽입, 삭제 등이 오랫동안 누적되면 트리의 깊이가 깊어지면서 조회 속도가 현저히 떨어집니다. 그렇기 때문에 주기적인 관리가 필수적입니다. 그렇다면 어떻게 인덱스를 관리할까요? 인덱스를 조회하는 방법부터 사용 여부 확인 및 리빌드 하는 방법에 대해서 알아보겠습니다.

인덱스 조회
SELECT * FROM USER_INDEXS [USER_IND_COLUMNS, ALL_INDEXS, ALL_IND_COLUMNS];
  • USER_INDEXS : 현재 계정 소유의 인덱스 정보
  • USER_IND_COLUMNS : 현재 계정 소유의 인덱스 컬럼 정보
  • ALL_INDEXS : 전체 인덱스 정보
  • ALL_IND_COLUMNS : 전체 인덱스 컬럼 정보
인덱스 사용 여부 조회 및 변경 (모니터링)
ALTER INDEX 인덱스명 MONITORING USAGE; // 인덱스 모니터링 설정

SELECT * FROM V$OBJECT_USAGE; // 모니터링 설정된 인덱스 조회

ALTER INDEX 인덱스명 MONITORING USAGE; // 모니터링 초기화

ALTER INDEX 인덱스명 NOMONITORING USAGE; // 모니터링 중지

------------------------------------------------------------------------------
ALTER INDEX 인덱스명 VISIBLE[INVISIBLE] // 인덱스 자동 사용[미사용]
사용 전/후 INDEX_NAME USED START_MONITORING END_MONITORING
사용 전 인덱스명 NO 시작 시간 NULL
사용 후  인덱스명 YES 시작 시간 NULL
모니터링 중지 인덱스명 NO 시작 시간 종료 시간

조회하고자 하는 인덱스에 모니터링을 설정 후, 위와 같이 조회를 하면 모니터링 설정된 인덱스를 조회할 수 있습니다.

인덱스가 사용되면 USED 컬럼이 'YES'로 바뀌며, 모니터링을 초기화하면 'NO'로 다시 바뀌게 되고, 모니터링 설정을 중지하면 END_MONITORING 컬럼에 종료 시간이 출력됩니다.

사실 인덱스의 사용 여부를 조회하는 방법은 두 가지가 존재하는데, 앞에서 설명한 모니터링과 '실행 계획'입니다. 실행 계획에 대해서는 다른 포스팅에서 설명하는 걸로 하고 지금은 존재한다는 것만 알아두고 넘어가겠습니다.

인덱스는 데이터베이스 내의 옵티마이저가 최적의 길로 안내해서 자동으로 사용되어집니다. 수동으로 사용할 수 있는 방법은 없을까요? 아닙니다! 힌트를 이용하면 본인이 원할 때 언제든지 사용할 수 있습니다. 하지만 무분별하게 사용하면 오히려 조회 속도를 감소시키는 원인이 되기 때문에 제대로 숙지하고 사용하시는 걸 권장합니다.

SELECT /*+ INDEX [테이블명/인덱스명] */
	  COLUMN1
    , COLUMN2
FROM 테이블명
[WHERE ···]

주석 (/*  */)에서 +만 추가하면 힌트를 사용하는 방법입니다. 주석과 비슷해서 헷갈리기 쉬우니 사용하실 때 주의하셔야합니다. 힌트에 대한 자세한 내용은 다음 포스팅에서 설명하겠습니다.

인덱스 리빌드

1. ANALYZE 명령어를 사용해서 상태를 확인하고자 하는 인덱스의 상태를 분석한다.

ANALYZE INDEX 인덱스명 VALIDATE STRUCTURE; // 인덱스 상태 조회

Index '인덱스명'이(가) 분석되었습니다.

2. 아래와 같이 조회한다. 0에 가까울수록 좋은 상태를 의미하며, 20% 초과 시에 성능 저하로 간주되오니 해당 인덱스를 리빌드 해주는게 좋습니다.

SELECT (DEL_LF_ROWS_LEN / LF_ROWS_LEN) * 100 AS BALANCE
FROM INDEX_STATS;

3. 해당 인덱스 리빌드

ALTER INDEX 인덱스명 REBULID;

※ 무수한 DML 작업과 무분별한 인덱스 사용을 오랫동안 방치하면 성능 저하를 일으킵니다. 주기적으로 리빌드해주는 것은 선택이 아닌 필수이며, 위와 같이 하나씩 검색해서 하는 방법은 굉장히 귀찮습니다. 전체 인덱스를 리빌드 하는 방법은 아래와 같습니다.

SELECT 'ALTER INDEX '||INDEX_NAME||' REBULID; ' FROM USER_INDEXS;

- 인덱스 조회 관련 포스팅 -

[ORACLE] 인덱스 (Index) 생성과 삭제 및 사용 시 주의사항

오늘은 데이터베이스 객체이며, '색인'이라는 사전적 의미를 가지고 있는 인덱스 (Index)에 대해서 알아보겠습니다. 인덱스에는 다양한 종류가 있고 상황에 따라 다르게 사용됩니다. 각종 SNS, 게

sookr5416.tistory.com

오라클 인덱스 리빌드 시간 - olakeul indegseu libildeu sigan