현재 SQL Server 2008 데이터베이스에서 몇 가지 실험을하고 있습니다.SQL Server 2008 : 교착 상태가 발생했습니다 ... 잠김없이 ...
UPDATE from Table A where rowID='123'
는 그러나, 나는이 교착 상태 오류의 톤을 받고 있어요 (: 더 구체적으로, 나는 데이터베이스에서 다음 쿼리를 실행합니다 각각의 작업의 수천을 실행하는 동시에 수백 개의 스레드를 사용하는 JDBC 응용 프로그램을 가지고 SQL Exception 1205). 격리 수준을 READ_UNCOMMITTED보다 높게 설정할 때마다. 행 잠금, 테이블 잠금 및 배타적 잠금 힌트를 설정하더라도 발생합니다! 그리고 잠금을 사용하지 않는 스냅 샷 격리에서도 여전히 교착 상태 오류가 발생합니다.
이런 일이 발생하면 SQL 프로파일 러를 통해 추적을 실행하여 교착 상태 그래프를 얻었지만 그다지 유용하지 않았습니다. 그것은 수백 개의 다른 프로세스와 연결된 "스레드 풀 (Thread Pool)"에 연결된 희생자 프로세스를 보여줍니다. 당신은 여기에서 확인할 수 있습니다 :
http://i.stack.imgur.com/7rlv3.jpg
이 사람이 왜 이런 일이에 관해서는 어떤 힌트가 있습니까? 나는 그것을 알아 내려고 노력하는 지난 며칠 동안 미쳐 버렸습니다. 현재의 가설은 DB 인스턴스의 사용 가능한 작업자 스레드, 사용 가능한 메모리의 양 또는 실제 쿼리 수준 잠금과 관련이없는 것 중 하나와 관련이 있다는 것입니다.
감사합니다.
[이미 본가?] (http://blogs.msdn.com/b/bartd/archive/2008/09/24/today-s-annoyingly-unwieldy-term-intra-query-parallel-thread- deadlocks.aspx) 업데이트 문에 병렬 계획이 있습니까? –
그리고'READ_UNCOMMITTED'가 적용될 때 이러한 교착 상태 **가 발생하지 않는다고 말하는가? 표시된'update' 문에 어떻게 영향을 미칠지 전혀 명확하지 않습니다. –
와우! 짧은 시간에 그렇게 많은 반응을 기대하지 않았습니다! 교착 상태는 READ_UNCOMMITTED에서 계속 발생하지만 많은 동시 스레드가 계속 발생합니다 (약 1000 개). 나는 모호한 것에 대해 사과합니다. – akwok