우리는 3300 만 개의 행을 가진 상당히 넓은 테이블 BaseData를 가지고 있습니다. 그런 다음 모든 종류의 매개 변수를 포함하는 여러 다른 테이블에 조인하는 업데이트 쿼리가 있습니다. 일부 함수가 적용되고 원본 Id별로 그룹이 만들어지고 그 결과가 몇 개의 열로 BaseData 테이블에 다시 쓰여집니다.테이블 잠금이 Oracle 10g 엔터프라이즈에서 업데이트 문을 빠르게 실행합니까?
이 과정은 매우 느려서 속도를 높이는 방법을 모색 중입니다. 필자는 SQLServer에 대한 경험이 많기 때문에 오라클의 모든 내부 구조는 아직 모릅니다.
업데이트 중에 Oracle은 모든 행의 버전을 작성하므로 모든 oher 독자가 영향을받지 않는 행을 읽을 수 있습니다. 그러나 이것은 상당한 자원을 필요로합니다. 업데이트를 모든 테이블의 버전을 만들지 않도록 테이블에 쓰기 잠금을 설정할 수있는 방법이 있습니까?
큰 업데이트를 원한다면 다른 팁이 있습니까? 우리는 이미 그것을 일괄 처리했습니다. 각 배치는 테이블의 별도 파티션에 있으며 여러 업데이트가 병렬로 실행됩니다. 하지만 아직도 너무 느립니다.
오라클은 행 일관성을 보장하기 위해 실행 취소 세그먼트를 사용하는 행 사본을 생성하지 않습니다. 조만간 대량 업데이트를 할 수있는 또 다른 방법을 제안 할 것입니다 ... – tbone
성명 (또는 성명 자체)의 개요를 게시 할 수 있습니까? –
안녕하세요, 오늘 늦게 힙합으로 다른 일로 정말 바쁩니다. – gjvdkamp