저는 Spring, Java, Ibatis, Oracle을 사용합니다. 많은 데이터를 처리하기 위해 멀티 스레딩을 사용하는 1 개의 작업이 있습니다.다중 스레드 : 중복 된 데이터를 쓸 때 가장 좋은 방법
모든 스레드는 데이터베이스 내의 같은 테이블에 데이터를 작성하지만, 약간의 시간이 스레드의 데이터는 그와 같은 contraint에 의해 동일합니다
CONSTRAINT n_uc1 UNIQUE (name, title, language, ...)
합니다. 같은 예제 코드 :이 코드
public Long write(Input input) {
Long key = read(input);
if (key != null)
{
return key;
}
try
{
key = write(input);
}
catch (org.springframework.dao.DuplicateKeyException ex)
{
// if exception happend, it means already wrote data, read it again
key = read(input);
}
return key;
}
, 나는 내가 기대하는 얻을 수 있지만, 시간이 나는 예외를 가지고, 그것은 성능이 아래로 이동합니다.
규칙은 다음과 같습니다는 성능이
당신이 어떤이 있습니까 내려 갈 수 있기 때문에
- 내가, 내가 원하지 않는
- 동기화 사용하는 스키마를 업데이트 할 수 없습니다 이것에 대한 다른 해결책? 성능이 매우 중요합니다.
모습이주는 : HTTPS : //dba.stackexchange.com/questions/72501/duplicate-key-violates-unique-constraint-when를 -using-multi-threading –
Thanks @AmolRaje,하지만 스키마를 업데이트 할 수 없습니다. 즉, 저장 프로 시저를 만들 수 없습니다. 다른 생각? – BIZ
* "성능은 매우 중요합니다"* 그러나 데이터베이스 성능을 관리하는 가장 중요한 요소를 변경할 수는 없습니까? 슬퍼. – APC