2011-03-19 3 views
1

우리 데이터베이스에는 거대한 테이블이 있습니다 (처음에는 20 년 전에 지어졌습니다). 우리는 그것을 개발하는 과정에 있습니다.낙관적 동시성 문제 및 개선 솔루션

일부 테이블에는 rowversion과 낙관적 인 동시성이 있습니다. 일부 특정 열의 수정에만 rowversion을 대응시키는 방법이 있는지 궁금해하고 있었지만 전부는 아니 었습니다. Normal Case에서는 생성 된 T-SQL이 엄청납니다.

제안 사항?

+0

필자는 0.5TB/day 이상으로 성장한 분산 시스템에서 작업했습니다 (분산 시스템 부하의 경우 정확히 나와 있지 않습니다). 당신보다 더 큰 소리로 말하고 있습니까? –

+0

아니요, 그보다 작습니다. 어쨌든, 누가 크기에 관심이, 나는 불필요한 내 관점에서 자동 - 생성 된 T-SQL의 양을 돌보고 있었다! 털어 버려! 해당 시스템의 기능을 설명 할 수 있습니까? HIDROGENIC BOMB 같은 것을 만들었나요? –

+0

라이브 검색에서 데이터 마이닝 엔진이었습니다 (Bing이되기 직전에 떠났습니다). –

답변

1

rowversionoptimistic locking에 사용하는 경우 사용하는 방법은 무엇입니까?

표준 트릭은 행 값을 읽을 때 rowversion을 읽는 것입니다. 나중에 UPDATE하는 경우 마지막으로 본 때 데이터베이스의 rowversion이 rowversion과 일치하는지 확인해야합니다. 그렇지 않다면 누군가 다른 사람이 너 아래에서 행을 수정 한 것을 알 수 있습니다.

UPDATE Customers 
SET Firstname = 'Faulty', Lastname = 'Orc', ... 
WHERE CustomerID = 624429 
AND rowversion = @rowversion 

업데이트 할 열만 업데이트하면됩니다.

어쩌면 여러 사람이 독자적으로 동일한 행을 변경하고 싶습니까? 그럴 경우, 아니오, 그렇게 할 수 없습니다.

관련 문제