2012-03-08 4 views
1

주식 가격을 추적 할 수있는 테이블이 하나 있다고 가정 해 봅시다. 나는 1000 tickers를 추적하고 시장 데이터를 지속적으로 수신하고 저장 프로 시저를 통해 테이블을 업데이트하는 프로세스를 가지고 있습니다.자주 호출되는 업데이트 SP의 격리 수준 수정?

동일한 시세 대상에 대해 발생하는 업데이트 간의 충돌에 대해 걱정하지 않습니다. 어떤 이유에서 건간에 동일한 시세 표시기에 대한 두 가지 업데이트가 정상적으로 작동한다고 가정 해 봅시다 (이것은 내 시나리오에서는 발생하지 않습니다). 저장 프로 시저에 가능한 한 적은 경합 만 있으면됩니다.

현재 시나리오에서 proc는 여러 시간 동안 동시에 호출되고 있으며 시간이 초과되었습니다.

proc는 현재 격리 수준으로 REPEATABLE READ를 사용하고 있습니다. 나는 프로 시저를 작성하지 않았으므로 이것이 왜 선택되었는지 확실하지 않습니다.

내 질문 :

  1. 그것은 REPEATABLE READ를 사용하여 (간접적으로)입니다 가능성이 이러한 시간 제한의 원인?
  2. 위의 기준에 따라 더 나은 선택이 될 것이라고 읽지 않겠습니까?

답변

2

격리 수준이 높아지면 동시성이 떨어집니다. 격리가 높을수록 동시성은 낮아집니다. REPEATABLE READ 또는 SERIALIZABLE과 같은 높은 동시성 수준을 사용하면 경합, 막힘 및 불충분 한 동시성이 발생합니다.

SNAPSHOT. 스냅 샷. 행 버전 관리가 다릅니다. 스냅 샷 ON 기능을 사용하면 독자가 작성자를 막을 수 없습니다. 집중적으로 읽고 동시에 작성하는 작업량은 일반적으로 매우 적합합니다. 그것은 비용을 가지고 있지만, 스냅 먼저 활성화 된 난 강력하게 성능을 조사하여 시작하는 당신을 촉구 : 격리 수준이되어야한다

하는 것으로 귀하의 독자들도으로 설정하십시오.

+0

재미 있고, 나는 이것을 읽겠습니다. 다음에 가장 낮은 고립 수준이기 때문에, 읽지 않은 것은 다음 최선의 선택일까요? –

+0

[READ COMMUNITTED가 일치하지 않습니다.] (http://blogs.msdn.com/b/sqlcat/archive/2007/02/01/previously-committed-rows-might-be-missed-if-nolock-hint-is- used.aspx) –