2014-12-02 3 views
0

정말 멈추고 그 밖의 다른 곳에서는 답변을 찾을 수없는 경우 일반적으로 여기에서 질문하지 않습니다. 이미 다른 곳에서 답변을 받으면 제 질문은 간단하고 사과해야합니다. 그러나 나는 곧장 대답을 찾을 수 없었습니다.빠른로드 및 교착 상태를 사용하지 않는 SSIS OLEDB 대상

SSIS를 사용하여 OLEDB 대상 구성 요소를 통해 테이블에 데이터를 삽입하고 있습니다. 나는 단순히 "테이블 또는 뷰"의 데이터 액세스 모드를 사용하고 "빠른로드"데이터 액세스 모드를 사용하지 않습니다. 교착 상태에 문제가 있습니다. 동일한 SSIS 레코드를 처리하여 동일한 대상 테이블에 삽입하는 4 개의 SSIS 패키지가 있기 때문입니다. 각 SSIS 패키지가 있고 원본 시스템의 개별 트랜잭션이기 때문에 한 번에 하나의 레코드 만 처리하도록 설치해야합니다. "빠른로드"데이터 액세스 모드를 사용하는 경우 테이블 잠금 옵션이 있는지 읽었습니다. 빠른로드 옵션을 사용하지 않으면 자동으로 테이블을 잠 그거나 고속로드를 사용하지 않을 때 테이블 잠금이 없습니까? 이러한 SSIS 패키지 중 두 개가 동시에 실행되고 빠른로드 옵션을 사용하지 않도록 OLEDB 대상을 설정하면 교착 상태의 원인이 될 수 있는지 여부를 알 수 없으면 교착 상태 문제의 원인을 찾으려고합니다. 빠른로드 데이터 액세스 모드를 사용하지 않는 이유는이 SSIS 패키지가 한 번에 한 레코드 씩 실행되기 때문에 빠른로드를 사용할 때 트리거 발생 문제가있었습니다 (빠른로드를 사용할 때 "FIRE_TRIGGERS"옵션에 대해 알고 있습니다) .

내 질문에 대한 간단한 대답은 내가 찾는 것이지만 다른 도움은 인정 될 것입니다.

+0

패키지가 설정된 격리 수준은 무엇입니까? 기본값은 SERIALIZABLE이지만 READ COMMITTED를 사용하는 것이 더 좋습니다. –

답변

1

표 또는보기 모드는 Tablock 힌트를 사용하지 않습니다. sys.dm_tran_locks
삽입 작업은 테이블에서 IX를 잠금으로 설정하고 키의 X를 눌렀을 때 테이블에서 잠길 수 있습니다.

삽입 작업 자체가 교착 상태를 일으키지 않으므로 각 삽입은 모두 완료 될 때까지 서로를 기다립니다. 반면에 트리거는 동일한 테이블에서 추가 잠금을 수행하지만 다른 삽입이 완료되기를 기다리는 경우 교착 상태를 일으킬 수 있습니다. 즉

  1. 삽입 1
  2. 삽입 (2)가 삽입 1
  3. 트리거 화재를 시작하고 2
  4. 트리거 화재 삽입 2에서 삽입 기다리고 시작

삽입 한 기다리고 그래서 트리거가 무엇을하는지보십시오. 그들은 작업 수행을위한 좋은 지표를 갖고 있습니까? 아니면 검사를하고 잠금 장치를 단계적으로 높이고 있습니까? 트리거를 사용 불가능으로 설정하고 삽입을 수행 한 후 사후 단계로 트리거 조작을 수행하는 것이 좋습니다. 어쨌든이 이론을 테스트하려면 트리거를 비활성화하고 교착 상태가 발생하는지 확인하십시오. 그런 다음 실행 계획을보고 더 나은 색인으로 개선 될 수 있는지 확인하십시오.

관련 문제