우선 SQL Server 2005에서 교착 상태가 실제로 발생하는 근본 원인을 알고 싶습니다. 두 프로세스가 테이블의 같은 행에 액세스 할 때가 그 때문입니까?SQL Server 2005에서 교착 상태를 제거하는 방법은 무엇입니까?
어쨌든, 두 테이블 모두 동일한 구조를 갖는 두 개의 테이블 _Table_Now_
및 _Table_History_
을 고려하십시오.
NAME
이라는 열이 있다고 가정합니다.
그래서 하나 개의 프로세스가 _Table_Now_
에 NAME='BLUE'
와 레코드를 업데이트하려고 할 때, 먼저, 그 다음 _Table_History_
에서 이전에 현재의 행을 삭제 또한 _Table_Now_
를 업데이트하고 _Table_History_
에 NAME='BLUE'
하여 본 행을 넣어해야합니다.
삭제하는 동안 교착 상태가 발생합니다. 왜 그런지 모르겠다 고요?
나를 안내하십시오! A는
을 완료하면 B가 완료되고 B는 \ 계속 시작됩니다 때 그냥 \ 시작 계속 있도록 프로세스 A가 프로세스 B와 프로세스 B에 의존 할 때 교착 상태가 기본적으로 의미
교착 상태는 일반적으로 여러 동시 트랜잭션을 포함합니다. 하나의 거래를 설명했습니다. 교착 상태에 관련된 다른 트랜잭션은 무엇입니까? – NPE
좋은 연습은'with (NOLOCK)'및'with (ROWLOCK) '와 같은 쿼리마다 힌트를 제공하여 dead lock을 피하는 것입니다. lock을 제거하려면'kill N'을 사용하여 spids 중 하나를 죽일 수 있습니다. 여기서 n은 spid입니다. 이드는 다른 쪽이 계속되는 것을 허용 할 것입니다. – AbstractChaos
더 이상의 정보가 없으면 도움이 될 것입니다. 다음은 SQL 프로파일 러를 사용하여 교착 상태를 분석하는 방법에 대한 링크입니다. http://msdn.microsoft.com/en-us/library/ms188246.aspx –