2016-12-01 7 views
0

로그 데이터베이스가 3 백만 행 이상이었습니다. 분명히 그것은 느리게 응답하고 따라서 테이블을 잘라 내기로 결정했습니다.고스트 레코드 정리 후에도 데이터베이스 성능이 느려짐

잘라 내기 전에 외래 키 제약 조건을 삭제하려고하면 SQL 관리 스튜디오가 손상되어 테이블을자를 수 없습니다. 따라서 나는 데이터베이스를 삭제하고 스크립트를 다시 실행하여 데이터베이스와 테이블을 만들었습니다. 데이터베이스를 삭제하려면 데이터베이스를 마우스 오른쪽 버튼으로 클릭하고 삭제 옵션을 누르십시오.

그 후에도 SELECT/INSERT 작업이 오래 걸리는 것으로 나타났습니다. 그래서 나는 앞으로 가서 Ghost records을 찾았지만 찾을 수 없었다. 데이터베이스를 이미 다시 만들었 기 때문일 수도 있습니다.

아직도 나는 고스트 클린업을 강요했다.

DBCC ForceGhostCleanup; 
GO 

아직 성능을 향상시킬 수 없습니다. 문제를 해결하려면 어떻게해야합니까?

감사합니다.

+3

잘 3 수백만 행은 DB에 대해 아무것도 아닙니다. 그리고 문제가 있다면 먼저 메모리, 하드 디스크, 색인, 동시성 등을 검사해야 할 다른 것들이 있습니다. 그러나 데이터베이스를 과도하게 삭제하십시오. 당신 차가 아침에 시작하지 않았고 당신이 가서 새 것을 사러가는 것과 같 읍니다./ –

+0

@JuanCarlosOropeza : 나는 극단적 인 조치를 취했다는 것에 확실히 동의하지만, 데이터가 중요하지 않았기 때문에 그것을했습니다. 그러나 나는 그것을 명심 할 것이다. 충분한 여유 메모리가 12GB 이상이고 하드 디스크가 1TB이므로 문제가되지 않아야합니다. 더 나은 성능을 위해서는 클러스터 된 인덱스가 필요하다고 생각합니다. – Marshal

+0

내 대답을 한번보세요, 생각의 같은 줄에 .. @ 마샬 –

답변

1

기존 인덱스 조각화를 살펴 보셨습니까? 인덱스를 다시 작성하거나 재구성해야 할 수도 있습니다.

이 문서는 여기에 프로세스를 밖으로 철자 : 여기

ALTER INDEX IX_Employee_OrganizationalLevel_OrganizationalNode ON HumanResources.Employee 
REORGANIZE ; 

샘플이 문을 다시 작성한다 :

ALTER INDEX PK_Employee_BusinessEntityID ON HumanResources.Employee 
REBUILD; 

당신은이 작업을 수행 할 수 있습니다 여기에 MSDN Index rebuild or reorg

은 샘플 재구성 문이다 인터페이스와 같은 마법사로 쉽게 구현할 수있는 데이터베이스 유지 관리 계획을 사용하여 유지 보수 유형을 지정합니다.

+0

@JuanCarlosOropeza 나는 따라 가지 않는다. 이것은 내가 인정할 수있는 광범위한 질문에 대한 대답입니다. –

+0

미안하지만, 나는 아바타에게 혼란 스러웠다. 또한 이름은 모두 M으로 시작됩니다. –

+0

@MisterPositive 나는 그것에 대해 살펴보고 다시 생각해 보겠습니다. 필자는 데이터베이스 전문가가 아니기 때문에 되돌릴 때까지 시간이 걸릴 수 있습니다. – Marshal

0

Mister Positive와 Juan Carlos Oropeza가 제공 한 의견에 따라 작업하면서 SqlServer가 내 PC에서 메모리의 94 %를 차지하는 것으로 나타났습니다. 데이터베이스를 삭제하더라도 메모리가 확보되지 않았습니다 (디스크가 아님). 공간).

이 문제를 해결하기 위해 SqlServer를 다시 시작해야만 메모리 사용량이 9 %로 줄었고 이후에는 모든 것이 부드러워졌습니다.