우리 데이터베이스에는 거대한 테이블이 있습니다 (처음에는 20 년 전에 지어졌습니다). 우리는 그것을 개발하는 과정에 있습니다.낙관적 동시성 문제 및 개선 솔루션
일부 테이블에는 rowversion
과 낙관적 인 동시성이 있습니다. 일부 특정 열의 수정에만 rowversion
을 대응시키는 방법이 있는지 궁금해하고 있었지만 전부는 아니 었습니다. Normal Case에서는 생성 된 T-SQL이 엄청납니다.
제안 사항?
우리 데이터베이스에는 거대한 테이블이 있습니다 (처음에는 20 년 전에 지어졌습니다). 우리는 그것을 개발하는 과정에 있습니다.낙관적 동시성 문제 및 개선 솔루션
일부 테이블에는 rowversion
과 낙관적 인 동시성이 있습니다. 일부 특정 열의 수정에만 rowversion
을 대응시키는 방법이 있는지 궁금해하고 있었지만 전부는 아니 었습니다. Normal Case에서는 생성 된 T-SQL이 엄청납니다.
제안 사항?
rowversion
을 optimistic locking
에 사용하는 경우 사용하는 방법은 무엇입니까?
표준 트릭은 행 값을 읽을 때 rowversion
을 읽는 것입니다. 나중에 UPDATE하는 경우 마지막으로 본 때 데이터베이스의 rowversion
이 rowversion과 일치하는지 확인해야합니다. 그렇지 않다면 누군가 다른 사람이 너 아래에서 행을 수정 한 것을 알 수 있습니다.
UPDATE Customers
SET Firstname = 'Faulty', Lastname = 'Orc', ...
WHERE CustomerID = 624429
AND rowversion = @rowversion
업데이트 할 열만 업데이트하면됩니다.
어쩌면 은 여러 사람이 독자적으로 동일한 행을 변경하고 싶습니까? 그럴 경우, 아니오, 그렇게 할 수 없습니다.
필자는 0.5TB/day 이상으로 성장한 분산 시스템에서 작업했습니다 (분산 시스템 부하의 경우 정확히 나와 있지 않습니다). 당신보다 더 큰 소리로 말하고 있습니까? –
아니요, 그보다 작습니다. 어쨌든, 누가 크기에 관심이, 나는 불필요한 내 관점에서 자동 - 생성 된 T-SQL의 양을 돌보고 있었다! 털어 버려! 해당 시스템의 기능을 설명 할 수 있습니까? HIDROGENIC BOMB 같은 것을 만들었나요? –
라이브 검색에서 데이터 마이닝 엔진이었습니다 (Bing이되기 직전에 떠났습니다). –