>  기사  >  데이터 베이스  >  오라클 인덱스 반전이란 무엇입니까?

오라클 인덱스 반전이란 무엇입니까?

WBOY
WBOY원래의
2022-06-13 16:00:012147검색

오라클에서 인덱스 플리핑은 인덱스 생성 시 인덱스 열의 인덱스 키 값을 바이트 반전시켜 서로 다른 자식 노드 블록을 분산 저장하는 목적을 달성하는 것을 의미하며 "B-트리" 인덱스의 분기입니다. 역방향 인덱스를 이용하면 인덱스 컬럼의 키 값을 반전시킬 수 있고, 순차 키 값을 서로 다른 리프 블록에 분산시켜 인덱스 블록에 대한 경합을 줄일 수 있다.

오라클 인덱스 반전이란 무엇입니까?

이 튜토리얼의 운영 환경: Windows 10 시스템, Oracle 버전 12c, Dell G3 컴퓨터.

오라클 인덱스 반전이란?

B-트리 인덱스의 분기로, 역방향 인덱스는 주로 인덱스 생성 시 인덱스 열의 인덱스 키 값에 대해 바이트 반전을 수행하여 다른 대상으로 분산 저장됩니다. leaf

하위 노드 블록.

역방향 인덱스가 노리는 문제

전통적인 B-트리 인덱스를 사용하면 인덱스 컬럼이 순서대로 생성되면 해당 인덱스 키 값이 기본적으로 동일한 리프 블록에 분산됩니다. 사용자가 이 열을 조작하면 필연적으로 인덱스 블록에 대한 경합이 발생합니다.

역 인덱스를 사용하여 인덱스 열의 키 값을 반전시켜 순차 키 값을 서로 다른 리프 블록에 분산시켜 인덱스 블록에 대한 경합을 줄입니다.

예: 키 값 ​​1001, 1002, 1003, 반전 후 1001, 2001, 3001이 되며 사용되지 않은 리프 노드 블록에 분산됩니다.

일부 정렬된 데이터를 로드할 때 인덱스는 I/O와 관련된 병목 현상을 확실히 겪게 됩니다. 데이터를 로드하는 동안 인덱스와 디스크의 일부 부분은 다른 부분보다 훨씬 더 자주 사용됩니다. 이 문제를 해결하기 위해 여러 디스크에 걸쳐 파일을 물리적으로 분할할 수 있는 디스크 아키텍처에 인덱스 테이블스페이스를 저장할 수 있습니다.

이 문제를 해결하기 위해 Oracle은 키 인덱스를 역전시키는 방법도 제공합니다. 데이터가 역방향 키 인덱스로 저장되면 데이터 값은 원래 저장된 값과 반대가 됩니다. 이런 방식으로 데이터 1234, 1235, 1236이 4321, 5321, 6321로 저장됩니다. 결과적으로 인덱스는 새로 삽입된 각 행에 대해 서로 다른 인덱스 블록을 업데이트합니다.

비트맵 인덱스 및 인덱스 구성 테이블에서는 반전 키 처리를 수행할 수 없습니다.

팁:

디스크 용량이 제한되어 있고 순서가 지정된 로드를 많이 수행해야 하는 경우 역방향 키 인덱싱을 사용할 수 있습니다.

비트맵 인덱스나 인덱스 구성 테이블에는 역키 인덱스를 사용할 수 없습니다.

ORACLE DBA 연습: 역방향 키워드 인덱스 생성

대규모 온라인 트랜잭션 처리 시스템의 경우 테이블은 일반적으로 매우 큽니다. 이러한 테이블의 기본 키는 일련 번호로 생성되며 해당 테이블에 인덱스가 있습니다. 따라서 동일한 데이터 블록 내에 인접한 인덱스 레코드가 존재할 수 있으며, 이로 인해 데이터 블록에 대한 경쟁이 발생하게 됩니다. 시간이 지남에 따라 오래된 쓸모없는 데이터는 지속적으로 삭제되고 새로운 유용한 데이터가 이 테이블에 삽입됩니다. 분명히 삭제된 데이터는 일련번호가 작은 오래된 데이터인 반면, 삽입된 데이터는 새로 생성된 일련번호를 가지고 있습니다. 큰 수) 이는 또 다른 심각한 문제를 야기합니다. 즉, 인덱스 트리가 시퀀스 번호가 큰 쪽으로 편향되어 트리의 깊이가 깊어지고 시스템 효율성이 저하됩니다.

위의 문제를 해결하기 위해 오라클은 역키워드 인덱스를 도입했습니다. 역방향 키워드 인덱싱은 키워드(일련번호)의 각 바이트 순서를 반대로 한 다음 다시 인덱싱하는 방식으로 수행됩니다. 예는 다음과 같습니다.

오라클 인덱스 반전이란 무엇입니까?위에서 볼 수 있듯이 원래 인접 순서#는 역전된 후 더 이상 인접하지 않습니다. 이러한 방식으로 인접 순서#는 다른 데이터 블록으로 분산될 수 있습니다. 문제는 해결하기 쉽습니다.

하지만 항상 일이 둘로 나뉘는데, 역색인 키워드에도 문제가 있습니다. 예를 들어, 역방향 키 인덱스가 있는 테이블에서 범위 쿼리를 수행할 때 문제가 발생합니다. 일반적인 인덱싱에서는 조건을 충족하는 인덱스 레코드를 동일하거나 인접한 데이터 블록에 배치해야 하는데 이는 매우 빠릅니다. 그러나 reverse 키워드 인덱스를 사용한 후에는 조건을 충족하는 원본 인접 인덱스 레코드가 여러 개로 분산됩니다. 데이터 블록의 경우 쿼리 작업을 완료하는 유일한 방법은 전체 테이블 스캔을 수행하는 것입니다. 따라서 역방향 키워드 인덱스를 사용할지 여부를 결정할 때 삽입 연산이 중요한지, 범위 쿼리가 중요한지 구분할 필요가 있다.

추천 튜토리얼: "

Oracle Video Tutorial

"

위 내용은 오라클 인덱스 반전이란 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.