2011-10-07 3 views
1

보고 목적으로 사용되는 테이블이 있으며 사용자가 웹에서 보고서를 실행할 때마다 데이터가 삽입됩니다. 삽입은 보고서의 매개 변수에 따라 단일 행에서 수천까지 다양 할 수 있습니다. 삽입에 사용 된 select 문은 삽입에 대해 최대 60 초 동안 실행될 수 있습니다. 그것은 최적화되었지만 데이터베이스의 복잡성으로 인해 더 이상 조정할 수 없습니다. 내 질문은 - 언제 삽입을 위해 테이블을 잠근 것입니까? 저장 프로 시저가 호출 될 때, select 문이 실행될 때 또는 select 문이 실행 완료 될 때입니까? 큰 테이블, 최대 50,000 개의 행이 실행될 때 다른 사용자가 영향을받지 않도록 테이블이 잠기는 시간을 제한하고 싶습니다.저장 프로 시저를 호출 할 때 테이블을 삽입 할 때 잠글 때

ex.

ALTER DATABASE [<dbname>] SET READ_COMMITTED_SNAPSHOT ON; 

을 그리고 보고서를 차단 삽입 잠금에 대해 걱정 중지 :

INSERT INTO reportTable 
SELECT 
    Column a, 
    Column b 
FROM 
    Table a 
    INNER JOIN 
    Table b 
     on b.ident = a.Bident 

답변

관련 문제