0
여러 서버가 낙관적 잠금에 의해 동일한 데이터에 액세스 할 때 동일한 데이터베이스를 사용합니다. 서버 A는 서버 B가 버전 1의 데이터를 가져오고 버전 2와 동시에 커밋합니다 여러 응용 프로그램에서 낙관적 잠금이 작동합니까?여러 응용 프로그램에 대해 낙관적 잠금이 작동합니까?
여러 서버가 낙관적 잠금에 의해 동일한 데이터에 액세스 할 때 동일한 데이터베이스를 사용합니다. 서버 A는 서버 B가 버전 1의 데이터를 가져오고 버전 2와 동시에 커밋합니다 여러 응용 프로그램에서 낙관적 잠금이 작동합니까?여러 응용 프로그램에 대해 낙관적 잠금이 작동합니까?
실제로 낙관적 잠금을 사용하는 경우 물론 여러 응용 프로그램에서 작동합니다. 그것이 낙관적 인 잠금 장치의 핵심입니다. 단일 응용 프로그램에서는 필요하지 않습니다.
하지만 "낙담하지 않기를 바랄뿐"이 아니라 낙관적 인 잠금 장치가되어야합니다. 즉 행의 업데이트는 이어야하며 항상이어야 새 버전 번호가됩니다. A와 B가 업데이트를 시도 할 때 실제로 수행되는 첫 번째 버전은 이전 버전이 증가하므로 다른 버전은 더 이상 일치하는 버전을 가지지 않으며 낙관적 인 동시성이 실패합니다.
A와 B가 동시에 커밋 될 때 데이터베이스는 낙관적이므로 커밋을 거부하지 않습니다. 커밋을 거부하는 기능은 응용 프로그램 자체에서 제어합니다. 여러 응용 프로그램에서 A 응용 프로그램은 B 커밋을 중지 할 수 없습니다. – jr1990
@ jr1990 정말 질문에 코드를 포함해야합니다. 실제로 낙관적 인 동시성을 제대로 구현하지 못하는 것 같습니다. 요점은 DB가 두 커밋을 모두 수용한다는 것이 아니라 오히려 쓸모 없게 만듭니다. 같은 행에 대한 업데이트는 직렬화되어야하며, 이후에 오는 업데이트는 실패합니다 (일반적으로 행 버전이 변경되었으므로 업데이트를 수행하지 않음). 응용 프로그램은 충돌을 해결해야하지만 DB가 충돌 저장소가 성공하도록해서는 안됩니다. – Luaan