1
동일한 트랜잭션 데이터베이스와 통신하는 2 대의 서버가 있다고 가정 해보십시오.트랜잭션 데이터베이스를 사용하여 중요한 섹션을 만들려면 어떻게해야합니까?
이 두 서버 중 하나만 주어진 시간 동작 (본질적으로 동기화를 시행하기 위해 데이터베이스 사용)을 수행하도록 설정하려고합니다. 내가 들었던 것으로부터이 라인을 따라 무언가가 작동 할 수도 있습니다.
내 테이블 TABLE에 ID와 STATUS라는 2 개의 열이 있습니다. 코드를 다음과 같이 설정하면 :
update TABLE set STATUS = 'processing' where ID = 1234 and STATUS != 'processing'
if (weHaveModifiedAtLeastOneRow)
{
// do critical section stuff here
// This is code that we only want one server to run, not both.
update TABLE set STATUS = 'free' where ID = 1234
}
else
{
// We failed to get the lock, so do nothing
}
여기에 몇 가지 개념이 없습니까?
나는 우리 자신의 자물쇠를 굴리는 큰 팬이 아니다. 그러나 이것이 해결책 일 수있는 경우입니다. 그러나 잠금을 발행 할 때 두 호출 서버가 동일한 ID를 사용하는지 확인해야하므로 동기화 문제를 해결하는 대신 전송하는 것처럼 보입니다. – APC