2015-01-29 7 views
0

5 분마다 업데이트되는 프로덕션 데이터베이스에 대해 매우 'SELECT'쿼리를 실행하는 데 사용되었습니다. 'SELECT'쿼리를 실행할 때마다 데이터베이스에 교착 상태 및 연결 시간 제한이 있습니다.SQL Server Management Studio에서 자동 커밋 해제 모드로 SELECT를 쿼리 할 때 T-SQL 교착 상태가 발생했습니다.

내가 궁금해하는 이유는 간단한 'SELECT'쿼리로도 이러한 교착 상태가 발생할 수 있습니다. 'SELECT'질의의 실행 시간은 1 초보다 짧았고 결과 세트의 수는 단 하나였습니다.

종종 쿼리를 실행하고 SQL 관리 스튜디오에서 'autocommit'모드의 결과를 얻은 후에 커밋하지 않았습니다. 교착 상태가 발생할 수 있습니까?

귀하의 답변이나 설명은 높이 평가됩니다.

여러분 께 미리 감사드립니다.

+0

글쎄,이 나쁜 데이터베이스 디자인의 냄새. 이것은 단지 일반적인 데이터베이스 쿼리 (트랜잭션 범위에서 수행)가 교착 상태가 아닌 경우 운이 좋다는 것을 의미합니다. 약간의 자물쇠 감사를 원할 수 있습니다. – Luaan

답변

1

이 기술 기사 (deadlocking)를 참조하십시오. 데드락을 만드는 방법을 논의하기 위해 단 2 개의 행을 가진 단일 테이블의 경우를 사용합니다. 데드락을 예측하고 방지하는 훨씬 더 많은 테이블, 연결 및 코드 경로가있는 실제 시스템에 들어가면 훨씬 더 어려워집니다.

'그냥'SELECT를 실행하는 경우 자동 커밋 모드를 해제해야하는 이유는 무엇입니까? 이렇게하면 커밋/롤백 할 때까지 모든 잠금이 유지되고 다른 연결이 차단됩니다.

+0

당신의 설명이 완전히 합리적입니다. 자동 커밋 모드를 켭니다. :) 나는 그것을 위해 나의 손가락을 교차시킬 것이다. –