2011-08-05 4 views

답변

3

현재 삽입 프로세스의 병목 현상은 무엇입니까? 난 "높은 동시성"에서 귀하의 질문에 당신이 OLTP 애플 리케이션에 대한 얘기가 어디 많은 단일 행 삽입보다는 데이터에 일반적으로 될 많은 행을 삽입하는 것 같아요 창고.

OLTP 시나리오에서 파티셔닝이 단일 행 삽입을 수행하는 데 필요한 시간을 줄이는 것은 거의 없습니다. 테이블에서 트리거와 같은 명백한 시간 낭비를 이미 제거했다고 가정하면 삽입 오버 헤드의 대부분은 리두 로그에 대한 쓰기를위한 약간의 I/O로 인덱스 유지 관리가 될 것입니다. OLTP 환경에서는 일반적으로 스테이징 테이블에로드 할 수 없으며 인덱스 유지 관리 비용을 줄이는 파티션 교환을 수행 할 수 없기 때문에 파티셔닝을 통해 파티션을 줄일 수 있습니다.

+1

시작 장소가 병목 현상을 확인하는 데 전적으로 동의합니다. 그러나 동시 삽입이 테이블이나 인덱스에서 핫 블록을 놓고 경쟁하고 있다고 가정하면 새 행이 다른 파티션으로 지정된 경우이를 처리하기위한 가능한 방법이 파티셔닝 할 수 없습니까? –

+1

@Dave - 문제가 핫 블록에서 발생하고 다른 세션이 다른 로컬 인덱스로 다른 파티션에 삽입되었다고 가정하면 테이블을 파티션하면 유용합니다. 색인을 해싱하는 것도 도움이 될 수 있습니다. 반면 역방향 키 인덱스는 경합 문제를 해결하기에 충분할 수도 있습니다. –

+0

안녕 저스틴, 데이브. 내가 1-100라고 말하면서 균일하게 분포 된 값으로리스트 파티션을 구현하고 싶습니다. 이 경우 세그먼트 수준 리소스 경합 제거 동시성을 줄이기 위해 노력하겠습니다. 테이블에는 인덱스와 트리거가 없습니다. 답변 해 주셔서 감사합니다. –

1

글쎄요, 다른 모든 것처럼, 그것은 다릅니다.

파티셔닝은 경합을 줄이고 핫 블록을 제거 할 수 있습니다. 예를 들어, 거래 시스템을 원한다면 상상해보십시오. 대리 고객 ID 값을 통해 해시로 분할 한 경우 각 색인은 상당히 작을 수 있으며 경합 및 색인 루트 분할의 영향을 덜받을 수 있습니다.

동시성 문제가있는 경우 다른 솔루션으로는 "한쪽 다리가있는"인덱스에 대해 역방향 키 인덱스를 사용하는 것입니다. 인덱싱 된 시퀀스가 ​​채워진 열로 인해 블록 분할이 계속됩니다. 그러나 역방향 키 인덱스를 사용하면 범위 스캔에서 인덱스를 사용할 수 없으므로주의해야합니다.

실제로 Oracle 대기 이벤트가 중요한 트랜잭션 경로의 일부인지 여부에 달려 있습니다. 여러분이 기다리고있는 것은 일반적으로 어떤 해결책이 적절한지를 결정합니다.

그래서 도움이 될 수 있습니다. 상황을 악화시킬 수도 있습니다. 대기 시간을 추가하는 것에 대한 정보가 없으면 인터넷이 문제를 해결하는 데 도움이되지 못합니다.

+0

안녕하세요, @ Adam. 그래서 이론적으로 도움이 될 수 있습니다. 좋습니다. 불행히도 필자는 오라클 내부를 잘 파악하지 못해 삽입물을 프로파일 링하고 병목 현상을 확인합니다. 나는 시간 메트릭스 만 삽입하는 것을 안다. 당신이 뭔가 유용한 것을 지적한다면 매우 감사 할 것입니다. 고맙습니다! –

+0

StatsPack을 사용하면 매크로 조정 수준에서 도움이되며 Oracle Performance and Tuning Guide에 설명되어 있습니다. –

관련 문제