2017-09-11 11 views

답변

4

오라클은 행 수준 잠금을 사용합니다. 그러므로 다른 상황을 살펴 봐야합니다.

1.) 웹 응용 프로그램과 작업이 서로 다른 행에 영향을줍니다. 괜찮습니다.

2.) 웹 응용 프로그램과 작업이 동일한 행에 영향을 미치고 잠금 시간 (UPDATE와 COMMIT 사이의 시간)이 짧아야 정상입니다. Oracle은 실행을 직렬화합니다.

3.) 귀하의 직업 또는 웹 앱이 오랫동안 잠금을 유지합니다. Oracle은 트랜잭션이 완료 될 때까지 기다릴 것입니다. 이 시간 동안 직장이나 앱이 멈추지 만 제대로 작동해야합니다. 잠금 시간이 시간보다 길면 제한 시간이나 참을성이없는 사용자에게 문제가 발생할 수 있습니다.

4.) 귀하의 직업과 앱이 여러 행을 업데이트하고 더 긴 시간 동안이 행에 대한 잠금을 유지하고 작업과 앱이 동일한 행에 영향을줍니다. 이것은 위험합니다. 당신은 교착 상태에 빠질 수 있습니다. 왜냐하면 여러분의 작업이 A 열에 자물쇠를 잡고 Row B를 업데이트하려고하고 여러분의 응용 프로그램이 B 열을 잠그고 A 행을 업데이트하려고하기 때문입니다. 그런 상황에서 Oracle은 두 세션 - 작업 또는 앱 이것은 재생산 및 분석이 매우 어려울 수 있기 때문에 매우 성가시다.

실제로 어떤 경우에 해당하는지 스스로 결정해야합니다.

관련 문제