2016-09-16 2 views
0

프런트 엔드 응용 프로그램에서 유지 관리하고 업데이트 한 테이블 집합에서 실행되는 스키마 바인딩 뷰 (SSMS 2008 R2)가 있습니다. 이번 주 초, 응용 프로그램을 업데이트하기 위해 배포 한 후 갑자기 교착 상태에 빠졌습니다. Dev through staging에서 성공적으로 실행되었지만 Prod에서 실행될 때마다 희생되었습니다.VIEW가 응용 프로그램 쪽 명령에 의해 반복적으로 교착 상태가 됨

추적을 실행하고 교착 상태 그래프를 포착하면 경쟁하는 DELETE 문이 응용 프로그램에서 왔음을 알 수 있습니다 (레코드를 UPDATE하지 않고 대신 DELETE 및 INSERT).

Edit1 : IX 수준의 잠금을 사용하는 경쟁 응용 프로그램 쪽 명령으로 인해 교착 상태가 발생합니다. VIEW는 S 레벨 잠금을 실행하지만 VIEW 쿼리가 지속적으로 대상 프로세스 인 경우 경쟁 명령이 교착 상태를 계속합니다. 격리를 '미확인 읽기'로 설정해도 문제가 해결되지 않습니다.

VIEW는 같은 테이블에서 여러 번 반복적으로 조인하여 레코드의 연결된 기록을 만듭니다. 나는 이것이 잠금의 타이밍을 회피하기에 너무 복잡하게 만드는 기능이라고 생각한다. 그것은 반나절 일한 다음 다른 사람들을 꾸준히 교착 상태에 빠뜨릴 것입니다.

단순히 용량 문제입니까, 아니면 교착 상태 문제를 해결할 수있는보고 구조를 구성하는 더 좋은 방법이 있습니까?

+0

너무 많이 손을 흔드는 것은 코드를 보여줍니다. 보기 정의로 시작한 다음 지원 테이블 및 해당 색인/키의 정의를 시작하십시오. – RBarryYoung

답변

0

많은 복잡한 교착 상태가 발생하는 경우 더 많은 수의 간단한보기로 나누는 것이 좋습니다. 스키마 바인딩보기에는 여러 테이블에서 색인을 가져 와서 특히 그럴 가능성이 있습니다 잠금 문제.