구조 기술 [포스트] B 트리 인덱스와 비트 맵 인덱스

B 트리 인덱스와 비트 맵 인덱스 구조를 설명

HTTP : // blog.itpub.net/12679300/viewspace-1174236/

 

서언 :?  ROWID : 키 값, (가 포함 된 행의 행 ID 비슷한 집 번호를 차단하는 가장 빠른 방법에 대해 살펴 제한된 ROWID 포인트 테이블 행을 모든 행이 동일한 세그먼트에 속해 있기 때문에 그렇게 사용을)?

인덱스 데이터베이스 튜닝의 50 % 이상의 보수 계산은 지수를 조정함으로써 최적화 될 수 제공된 중복 구성을 통해 효율을 개선하기 위해 데이터베이스 쿼리이고;

ORACLE 국내 단어의 수석 전문가의 말을 인용 : "사실, 난 단지 지점 (추방) 지식, IT 있지만, 사실은 사실 만 점에 있지만, 사실만을 데이터베이스 SQL, SQL을 발견하지만 방법을 알고 방법을 알고 오라클, 오라클 데이터베이스를 가리 키도록 방법을 알고 방법을 알고 사실 만 당신은 진짜 전문가 "-" "인덱스의 포인트를 이해!

적게, 데이터베이스 업데이트 버전보기의 모든 지점에서있을 것 DBA의 일상 운영 및 유지 보수 등의 얕은 개인적인 경험에 따르면, 데이터베이스 시스템은 점점 더 후, DBA 지능형 경향이 점점 살고 덜 수있는 DBA가 만 매일 테이블 공간 확장을 수행 할 수있는 경우 업데이트 데이터베이스 백업 복구, 시작하고 시스템을 중지, 그것은 매우 위험한 일이 될 것입니다. 곡은 역사적으로 우리가 이것을 할 수 있다면, 다음 DBA가 회사의 가치와 역할을 만들 수 있습니다, 아주 깊은 지식을하고있다, 더 중요한;

인덱스로 시작, 좋은 작업 튜닝을 수행하려는 경우 테마의 도입, 그것을 시작해야했다 가졌.

다음 장 인덱스 시작, 첫 번째 챕터에서 인덱스 카테고리의 지식을 계속 업데이트됩니다;

 

등 역 색인 B 트리 인덱스, 인덱스 맵, 해시 인덱스를 다음과 같이 인덱스 구조에 두 카테고리 분할 될 수있다

 

세 지수 소개 :

1, B 트리 인덱스 (BTREE

B 지수는 가장 일반적으로 사용되는 인덱스, 우리가 일반적으로 작업은 "인덱스"기본 인덱스 번호는 B 말했다 우리의 일상 업무의 수;

인덱스처럼 또한 도서관의 카탈로그 B 트리 인덱스에 가장 적합한 구조를 설명하기 위해 실제로 책의 카탈로그와, 이해하기 쉽고 매우 간단하고,

B 트리 인덱스 구조 :

색인 항목의 다음 단계에 대한 링크를 포함하는 루트의 인덱스 상단. 다음 레벨은 하나 개의 인덱스 블록에서 다음 단계로 인덱스 점에서 분기 블록 인 것이, 하부 테이블 행 인덱스 엔트리 포인트를 포함하는 리프 노드이다. 최하위 블록 오름차순 또는 내림차순 스캔 인덱스에 키 값과 현재 연관된 양방향이고;

 

인덱스 리프 항목의 형식

인덱스 항목은 다음과 같은 구성 요소가 포함되어 있습니다 :

? 헤드 항목 : 열 및 잠금 정보 저장의 수

? 컬럼 길이의 키 / 값 쌍 : 열 값에 따라 크기가 정의 키 컬럼 (인덱스의 열 개수는 길이 / 값 쌍의 최대 수이다).

 

인덱스 리프 항목 특성

비 분할 된 테이블에서 B-tree 인덱스 :

? 동일한 키를 가진 여러 행이 아닌 압축 인덱스 경우, 키가 반복됩니다

행이 NULL로 모든 키를 포함하면?, 은행은 인덱스 항목을 해당 없다. 따라서, 때 절 지정의 NULL은 항상 전체 테이블 스캔을 수행합니다 WHERE

 

인덱스 수행 DML의  효과 작업

테이블에 DML 작업은 오라클 서버는 모든 인덱스를 유지합니다. 다음은 인덱스에 의해 생성 된 DML 명령의 이행의 효과를 설명합니다 :

? 각 블록 인덱스 엔트리의 삽입에 삽입 연산 결과.

? 단지 인덱스 항목의 삭제로 이어질 행을 삭제합니다. 삭제 된 행은 공간이 새 잎 항목을 나중에 사용할 수 없습니다 점령했다.

? 키 열이 논리적 삭제 및 삽입 될 인덱스를 업데이트합니다. PCTFREE 설정은 생성 된 경우를 제외하고 인덱스에 영향을주지 않습니다. 공간 인덱스 블록 PCTFREE 지정된 공간보다 작거나 인덱스 블록에 새로운 항목을 추가 할 경우에도 마찬가지입니다.

도 더 나은 인덱스의 구조를 반영

 

2 비트 맵 인덱스

비트 맵 인덱스 (비트 맵 인덱스)를 시작 Oracle7.3 버전에서 도입된다. 현재 오라클 엔터프라이즈 에디션 및 개인 Edition은 비트 맵 인덱스를 지원하지만, 표준 버전은 지원되지 않습니다.

비트 맵 인덱스는 일반적인 OLTP 시스템에서 상대적으로 드물지만 종종 OLAP 시스템에서 볼 것, 튜닝라는 세 가지 데이터웨어 하우스 도구 중 하나;

 

 

 

특정 상황의 B-tree 인덱스의 장점보다 비트 맵 인덱스에 의해 다음과 같은 비트 맵 인덱스 (:

(즉, 컬럼의 다른 값이 거의 시간) 때의 행 및 열의 키들 수백만 기저? 표. 예를 들어, 여권 기록 테이블 컬럼 결혼 여부 및 성별, 비트 맵 인덱스는 B 트리 인덱스보다 더 바람직 할 수있다.

? 질의들은 종종 복수의 OR 조건 연산자의 조합을 포함 할 때

? 键列上的活动为只读活动或少量更新活动时(OLAP系统的特点)

 

位图索引的结构

位图索引也可以按B 树形式进行组织,但是,叶节点会存储每个键值的位图,而不是行ID 列表。位图中每一位与一个可能的行ID 对应,如果设置了该位,则表示具有对应行ID 的行包含键值。

如图所示,位图索引的叶节点包含:

? 条目头,其中包含列数和锁定信息

? 由每个键列的长度/值对组成的键值(在幻灯片的示例中,关键字只由一列组成;第一个条目的键值为Blue)

? 开始ROWID,在本示例中它指定块号10、行号0 和文件号3

? 结束ROWID,在本示例中它指定块号12、行号8 和文件号3

? 由位字符串组成的位图段(如果对应行包含键值,则会设置位;如果对应行不包含键值,则不会设置位。Oracle 服务器使用已获专利的压缩技术存储位图段。)开始ROWID 是位图中的位图段指向的第一行的行ID,也就是说,位图的第一位对应于该行ID,位图的第二位对应于块中的下一行。结束ROWID 是一个指针,它指向由位图段覆盖的表中的最后一行。位图索引使用受限的行ID。

 

使用位图索引

B 树用于定位叶节点,这些节点包含指定键值的位图段。开始ROWID 和位图段用于定位包含键值的行。

对表中的键列进行更改后,也必须修改位图。这会导致相关的位图段被锁定。由于锁是在整个位图段上获得的,因此,在第一个事务处理结束之前,其它事务处理不能更新位图覆盖的行。

 

 

文档的篇幅有限,先介绍最常见的B树索引和位图索引,这只是入门的第一步,后续将会陆续更新,多谢各位的关注。

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

本文作者:JOHN

ORACLE技术博客:ORACLE 猎人笔记               数据库技术群:367875324 (请备注ORACLE管理 )  

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

추천

출처www.cnblogs.com/jinanxiaolaohu/p/11840392.html