2009-12-20 1 views
2

우리는 며칠마다 사용할 수 없게되고 데이터베이스를 다시 시작해야하는 데이터베이스가 있습니다 (데이터베이스 A라고 함). 내가 사용할 수 없다는 말은 데이터베이스를 사용하는 모든 응용 프로그램이 데이터베이스를 기다리지 만 차단한다는 의미입니다.잠긴 프로세스 나 잠금 프로세스가 없으면 SQL Server 2005가 차단됩니다.

SQL Server Management Studio를 사용하여 특정 테이블에 대해 SELECT 문을 실행하면 일부 레코드를 가져 오는 것으로 보이지만 일부 지점에서는 차단되는 것으로 나타났습니다.

재미있는 점은 특정 데이터베이스에 LOCKED 또는 LOCKING 프로세스가 없다는 것입니다. 우리가 잠긴 또는 오른쪽으로 프로세스를 잠금 볼 수없는 이유를 설명

ALLOW_SNAPSHOT_ISOLATION ON 

: 나는 응용 프로그램이 다음 트랜잭션 격리를 사용하는 것을 발견?

우리는 실제로 동일한 스키마를 가지고 있으며 결코이 문제가 없었던 다른 데이터베이스 (데이터베이스 B라고 함)를 가지고 있습니다. 이러한 데이터베이스 간의 유일한 차이점은 이전에 언급 한 격리입니다. 이것은 하나의 기본 트랜잭션 격리를 사용하고 우리는 데이터베이스 차단의이 이상한 일을 결코 가지지 않았습니다. 그러나 데이터베이스 A는 하루에 더 많은 트랜잭션을 열 수 있습니다. 훨씬 더. 그래서 내가 생각할 수있는 것은 SNAPSHOT ISOLATION이이 경우 많은 수의 동시 트랜잭션을 피해야한다는 것입니다.

누군가가 문제를 일으키는 스냅 샷 격리 문제 일 가능성이 가장 높습니다. 우리는 잠금 기능이 없다는 것을 의미합니다. 실제 예외가 없거나 문제의 근본 원인을 발견하는 데 도움이되는 데이터베이스 차단 기능이 있습니다.

내 가정이 맞습니까? 나는 분명 그렇게 희망한다.

답변

2

tempdb 사용을 모니터링 해 보셨습니까?

This MS technet page이 당신도 할 수

(섹션 '모니터링 공간을'참조)을 수행하는 방법에 대한 몇 가지 도움말을 제공합니다 (AFAIK, ALLOWSNAPSHOT_ISOLATION ON 표준 잠금 전략의 경우에는 해당되지 않습니다있는 tempdb의에 크게 의존) 이 빠른 쿼리를 사용하여 tempdb가 가득 차 있지 않은지 확인하십시오.

use tempdb 
    exec sp_spaceused 
+0

tempdb에서 모니터링해야 할 사항에 대한 정보를 얻을 수 있습니까? – DaTroop

+0

방금 ​​내 대답을 업데이트했습니다 ... – Brann

+0

이게 어떻게 도움이 될까요? 현재 데이터베이스의 테이블, 인덱싱 된 뷰 또는 Service Broker 큐에서 사용하는 행 수, 예약 된 디스크 공간 및 디스크 공간을 표시하거나 예약되어 사용 된 디스크 공간을 표시합니다 전체 데이터베이스에 의해 이 내게 tempdb에 의해 할당 된 공간을 표시하는 것이 뜻. 데이터베이스 A를 매우 느리게 만드는 요인을 모니터링하기 위해 내가 할 수있는 일은 무엇입니까? – DaTroop