많은 컬럼이있는 Products라는 테이블이 있습니다.동시 삭제를위한 교착 상태를 피하십시오
보고 용도로 사용되는 임시 테이블입니다. 데이터는 다수의 사용자의 요청에 의해 동시에이 테이블에 처리 될
테이블 구조 (표에 DML 작업을 저장 프로 시저를 분리해서). 테이블 제품을 (인스턴스의 고유 식별자, 삽입 날짜, COL1 만들기 COL2을 , ...)
데이터를 삽입 할 때 삽입 된 열에 GETDATE()가 채워집니다. 인스턴스 열은 newid() 값을가집니다. 하나의 사용자 요청에는 하나의 고유 ID가 있습니다. 백만 행이있을 수 있습니다. 아래는 동시 적으로 실행될 질의이며 교착 상태의 원인이됩니다. 나에게
에 Query1을 알려 주시기 바랍니다 : "설정 트랜잭션 격리가 삭제 READUNCOMMITTED : 이
QUERY2"설정 트랜잭션 격리가 예를 = 'XXXX-XXX--XXX XX'제품 (NOLOCK)에서 P를 삭제 READUNCOMMITTED " P (Nolock) 제품에서 삽입 된 위치 < = DATEADD (hh, -10, getdate()) "
참고 : 비 클러스터형 인덱스는 인스턴스 열에 만들어집니다.
이 시나리오에서 사용할 수있는 잠금 장치를 알려주십시오.
참고 테이블에 1,000 만 개의 행을 삽입 할 때 기본 키를 사용할 수 없습니다 (하나의 트랜잭션에 대해 20 개의 동시 변환이 있음). 보고서가 더 빨리 생성되어야합니다. 그리고 내 프로 시저에는 여러 개의 35 DML 구문이 있습니다. 예를 들어 다른 열 (인스턴스가 @instance이고 col1이 @ col1 인 테이블의 DElete)과 함께 약 15 개의 DELETE 문이 있습니다.
http://stackoverflow.com/questions/9952137/multi-threading-c-sharp-application-with-sql-server-database-calls/10035988#10035988 – Phil