Bitmap 비트맵 인덱스와 일반 B-Tree 인덱스 잠금 비교
10048 단어 oracle 독서 노트
Bitmap 비트맵 인덱스가 일반적인 B-Tree 인덱스 잠금에 비해 "많은 비용"을 지불하는지 확인하려면 다음 실험을 수행합니다.비트맵 인덱스는'비트맵 세그먼트 레벨 잠금'을 가져올 수 있으므로 실제 사용 과정은 반드시 서로 다른 인덱스가 가져오는 잠금 대가 상황을 충분히 이해해야 한다.
1. 차이점을 비교하기 위해 두 가지 색인 유형의 테스트표를 만든다
1) 표 tbitmap에서 비트맵 인덱스 만들기
SYS@ORA11GR2>create table t_bitmap (id number (10),name varchar2(10),sex varchar2(1));
Table created.
SYS@ORA11GR2>create bitmap index t_bitmap_idx on t_bitmap(sex);
Index created.
2) 표 tbtree에서 일반 B-Tree 인덱스 만들기
SYS@ORA11GR2>create table t_btree (id number(10),name varchar2(10),sex varchar2(1));
Table created.
SYS@ORA11GR2>create index t_btree_idx on t_btree(sex);
Index created.
2. 표마다 두 개의 데이터를 초기화
1) 데이터 초기화 tbitmap 테이블 데이터
SYS@ORA11GR2>insert into t_bitmap values(1,'WANG','M');
1 row created.
SYS@ORA11GR2>insert into t_bitmap values(2,'chen','F');
1 row created.
2) 데이터 초기화 tbtree 테이블 데이터
SYS@ORA11GR2>insert into t_btree values(1,'WANG','M');
1 row created.
SYS@ORA11GR2>insert into t_btree values(2,'chen','F');
1 row created.
SYS@ORA11GR2>commit;
Commit complete.
3) 초기화 후 결과 보기
SYS@ORA11GR2>select * from t_bitmap;
ID NAME S
---------- ---------- -
1 WANG M
2 chen F
SYS@ORA11GR2>select * from t_btree;
ID NAME S
---------- ---------- -
1 WANG M
2 chen F
3. 서로 다른 세션 중 에 대한 일반 B-Tree 색인 표 tbtree'보이'데이터 삽입, 수정 및 삭제
첫 번째 세션에 삽입된 후 제출하지 마십시오
SYS@ORA11GR2>insert into t_btree values (3,'ANDY','M');
1 row created.
두 번째session에 같은 상태 데이터를 삽입하면 삽입, 수정, 삭제가 모두 성공적으로 완료되었음을 알 수 있습니다!
SYS@ORA11GR2>insert into t_btree values(4,'tut','M');
1 row created.
SYS@ORA11GR2>update t_btree set sex='M' where id=2;
1 row updated.
4. Bitmap 비트맵 인덱스 테이블 t 가 있는 서로 다른 세션bitmap '보이' 데이터 삽입, 수정, 삭제
1) 첫 번째 세션 삽입 후 제출하지 않기
SYS@ORA11GR2>insert into t_bitmap values(3,'ANDY','M');
1 row created.
2) 두 번째session에서 남자아이의 데이터를 처리하면 조작 정보에 있는 그림의 색인열과 관련된 삽입, 수정, 삭제만 하면 완성할 수 없음을 알 수 있습니다!!
(1) 삽입 테스트는 삽입 데이터가 비트맵 인덱스 열'sex'필드와 관련이 있을 때 완성할 수 없습니다.
SYS@ORA11GR2>insert into t_bitmap values(4,'tut','M');
문제가 생겼다.'자물쇠 대기'가 정체되어 움직이지 않는 현상이 나타났다!
삽입된 데이터가 비트맵 인덱스 열'sex'필드와 관련이 없을 때 완성할 수 있습니다.
SYS@ORA11GR2>insert into t_bitmap(id,name) values(4,'tut');
1 row created.
SYS@ORA11GR2>commit;
Commit complete.
(2) 테스트를 업데이트할 때 두 번째 세션의 테스트 데이터는 다음과 같습니다.
비트맵 인덱스 열 'sex' 필드의 값이 'M' 이면 완성할 수 없습니다.이때 성공한 것은 첫 번째 줄 데이터의 sex 값 자체가 'M'이기 때문이다.
SYS@ORA11GR2>update t_bitmap set sex='M' where id=1;
1 row updated.
SYS@ORA11GR2>update t_bitmap set sex='M' where id=2;
문제가 생겼다.'자물쇠 대기'가 정체되어 움직이지 않는 현상이 나타났다!
SYS@ORA11GR2>update t_bitmap set sex='M' where id=4;
문제가 생겼다.'자물쇠 대기'가 정체되어 움직이지 않는 현상이 나타났다!
또한 업데이트된 열이 비트맵 인덱스에 대응하는 열이 아니라면 비트맵 세그먼트 인덱스 잠금의 제한을 받지 않습니다.
아래와 같다.
SYS@ORA11GR2>update t_bitmap set name='xu' where id=2;
1 row updated.
SYS@ORA11GR2>select * from t_bitmap;
ID NAME S
---------- ---------- -
1 WANG M
2 xu F
4 tut
(3) 삭제 테스트
SYS@ORA11GR2>delete from t_bitmap where id=1;
'자물쇠 대기'가 정체되어 움직이지 않는 현상이 나타났다!
SYS@ORA11GR2>delete from t_bitmap;
문제가 생겼다.'자물쇠 대기'가 정체되어 움직이지 않는 현상이 나타났다!
요약:
비트맵 인덱스는 낮은 cardinality 열에 사용하는 것이 좋습니다. 예를 들어 위의 '성별' 열은 'M', 'F' 두 가지가 있습니다.이 기본 원칙을 토대로 비트맵 인덱스를 포함하는 표의 조작 특징을 진지하게 고려해야 한다. 만약에 병렬 조작이 높은 시스템이라면 비트맵 인덱스를 사용하기에 적합하지 않다!
비트맵 인덱스와 일반 B-Tree 인덱스 자물쇠의 비교
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitmap 비트맵 인덱스와 일반 B-Tree 인덱스 잠금 비교Bitmap 비트맵 인덱스와 일반 B-Tree 인덱스 잠금 비교 Bitmap 비트맵 인덱스가 일반적인 B-Tree 인덱스 잠금에 비해 "많은 비용"을 지불하는지 확인하려면 다음 실험을 수행합니다.비트맵 인덱스는'비트...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.