2010-08-12 3 views
2

Oracle에 현재 밀리언 레코드를 저장하고있는 테이블이 있습니다. 이 테이블은 XML 데이터를 저장하는 CLOB 컬럼이 2 개 있습니다. 또한 사용자가 CLOB 열을 제외한 모든 열을 검색 할 수있는이 특정 테이블에 대해 검색 화면을 구축했습니다. 나는에 자리에 바로 인덱스를 가지고데이터 검색 - Oracle에서 CLOB 열을 사용한 성능

가정 자주 열을 검색하지 테이블 효과의 CLOB 컬럼의 존재 레코드에 대한 테이블을 검색하는 동안 성능 -

지금 여기 내 질문입니까?

이 두 CLOB 열을 새 테이블로 이동하고 기본 키를 사용하여 상위 테이블과의 관계를 정의하면 레코드 검색 및 검색 측면에서 성능이 향상 될 것입니다.

알려주세요.

답변

5

LOB (CLOB 포함)은 인라인 또는 라인 외부 저장 될 수 있습니다. 인라인 스토리지는 더 작은 CLOB (예 : 일반적인 값은 수백 바이트 일 수 있지만 가끔씩 수천 개가되는 경우)에서 더 일반적입니다. 더 자세한 내용 here

Out-of-line 스토리지는 이러한 CLOB를 새 테이블로 이동하는 것과 관련이 있습니다. 그러니 방해하지 마세요. 도움이된다면 단순히 "DISABLE STORAGE IN ROW"옵션을 사용하십시오.

어느 것이 더 낫습니까? 그것은 달려있다. 그렇지 않은 경우 오라클은 최선을 다해 다른 고객의 옵션을 제공하지 않을 것입니다.

인라인을 저장한다는 것은 메모리 캐시에서 더 적은 수의 행을 가질 수 있도록 각 행이 더 많은 공간을 차지한다는 것을 의미합니다. 즉, 디스크를 더 자주 히트해야하므로 느립니다. 이들을 개별적으로 저장한다는 것은 이러한 열을 원할 때 캐시가 아닌 디스크에서 추가 데이터 블록을 가져와야한다는 것을 의미합니다. 그러면 느려질 것입니다.

CLOB를 자주 사용하는 경우 작지만 작은 행을 사용하는 것이 좋습니다.

그러나 왜 XML을 XMLType이 아닌 CLOB로 저장합니까?

+0

CLOB보다 XMLType을 사용하면 어떤 이점이 있습니까? 좀 더 명확히 해 주시겠습니까? – jagamot

+0

숫자 나 문자열 대신 날짜를 날짜로 저장하는 것과 같습니다. 잘 구성된 XML이고 변환 오버 헤드없이 XML에서 XML 조작을 수행 할 수 있다는 것을 알고 있습니다. –

관련 문제