2013-12-16 3 views
0

나는 약 400 억 -550 만 레코드의 테이블을 얻었다. 매일 약 4 백만 건의 인서트가 있습니다. 이 테이블에는 6 개의 외래 키 (사실 테이블 데이터웨어 하우스)가 있습니다.거대한 테이블에 인덱스를 사용하는 가장 좋은 방법

이제 비트 맵 결합 색인을 사용할 생각이었습니다. 하지만 필자가 읽은 것에서 볼 때 삽입물은 꽤 느려질 것입니다.

표가 자주 조회됩니다. 인덱스 전략이 어떻게 생겼는지 좋은 아이디어가 있습니까?

답변

3

특정 열을 인덱싱하지 않으면 조건이있을 때마다 전체 테이블 (또는 파티션) 검색에 대한 대안이 없습니다. 그것은 아마도 인덱스를 관리하는 오버 헤드보다 시간이 지남에 따라 훨씬 더 많은로드입니다.

비트 맵 조인 인덱스가있는 삽입 물은 차원 테이블을 조회 할 필요가 있지만 큰 차원 테이블에서는 잠재적으로 비효율적입니다. 더 작은 테이블에 조인하는 열에 대해서만 첫 번째 단계로 비트 맵 조인 인덱스를 사용할 것을 고려할 수 있습니다.

색인에 대한 대안은 될 매우 큰 차원 테이블에 http://docs.oracle.com/cd/E11882_01/server.112/e25523/part_warehouse.htm#CHDHEBBA

내 기본 접근 방식을 결합의 효율성을 향상 또한 도움이된다 테이블, 파티션입니다 : 쿼리 성능에 대한

  • 파티션 파티션 정리를 통한 개선.
  • 큰 차원 테이블에 대한 조인 효율성을위한 하위 파티션
  • 파티션 정리가 도움이되지 않는 쿼리 성능을 향상시키기 위해 비트 맵 인덱스를 적용하십시오.
+0

사실 테이블은 실제로 이미 분할되어 있습니다 (매일 기준). 아픈 것 같아서 단계별로 시도해야합니다. – user2428207

+0

사용자가 실행하는 쿼리의 유형입니다. 파티션 또는 여러 파티션에 있습니까? 더 중요한 것은 비트 맵 조인 인덱스 또는 더 빠른 쿼리 응답을 사용하여 삽입을 히트하는 것입니다. –

0

외래 키가 너무 비싸고 떨어 뜨릴 시간이 될 수도 있습니다 ... 일명 이베이. 그런 다음 위반 사항을 확인할 수있는 일자리가 필요합니다.

관련 문제