2010-06-26 4 views
1

Windows Server 2008에서 SQL Server 2008을 사용하고 있습니다. temp DB mdf와 temp ldf가 매우 크고 (약 13G), 다른 모든 실제 응용 프로그램 데이터베이스 파일과 거의 같은 크기입니다 (mdf + 1df)이다.SQL Server 임시 DB 문제

내 질문에,

  1. 무엇 임시 DB에 사용?
  2. 임시 DB가 너무 큰 정상적인 상황입니까? 그렇지 않은 경우 시스템 성능 및 안정성에 영향을 미치지 않고 임시 DB를 정리하는 방법은 무엇입니까? 사전에

덕분에, 조지

+2

검색해 보셨습니까? –

+0

Google 후에 2 번 항목에 대한 답을 찾지 못했습니다. 아이디어가 있습니까? – George2

답변

2

shrinkdb, shrinkdatabase DBCC 명령을 사용하여 tempdb mdf/ldf 파일을 축소 할 수 있습니다.

use tempdb 
go 

dbcc shrinkfile (tempdev, 'target size in MB') 
go 

dbcc shrinkfile (templog, 'target size in MB') 
go 

효율적으로 코드를 작성하면 tempdb가 커질 수 있습니다. 성능의 주요 원인 인 코드에서 "커서"를 사용하지 말고 커서의 데이터 집합이 커질수록 tempdb의 크기가 커집니다. 임시 테이블을 사용하지 마십시오. #temptable을 사용하여, 전체 범위에 대해 # 유혹 할 필요가 없으면 성능 문제가 다시 발생합니다.

SQL 2005/2008에는 임시 테이블에서 데이터를 쿼리 할 수있는 CTE가 있으며 범위는 그 다음에 한 줄입니다.

;With CTETable as 
(
    SELECT <Columnlist> FROM <TableName> {Joins} WHERE <Condition> GROUP BY <Column List> ORDER BY <COlumn> ASC 
) 

SELECT ColumnList from CTETABLE 
.... 
Statements 

해당 CTEtable의 범위는 "SELECT ColumnList from CTETABLE"행 후에 만료됩니다. 이렇게하면 더 효과적입니다. 효과적인 질의를 작성하는 것도 도움이 될 것입니다.

+0

안녕하세요, 1. 제어판에서 SQL Server 서비스를 다시 시작하면 임시 DB가 자동으로 축소되는지 여부를 알고 싶습니다. 2. 성명서에서 dbcc shrinkfile (tempdev, '대상 크기 (MB)), tempdev는 무엇입니까? – George2

+0

또 다른 질문은 임시 데이터베이스가 성능에 영향을 주는지 여부입니다. – George2

+1

RTFM - 문서에 잘 설명되어 있습니다. tempdb는 모든 서버 시작시 만들어집니다. tempdb 줄이기는 성능에 영향을 미치지 않습니다. 너무 작 으면 성장할 수 없으면 오류가 발생합니다. 참고 : 최상의 성능을 얻으려면 tempdb의 파일 수를 조정하십시오. – TomTom

1

1 : 임시 데이터베이스 정렬 같은 것들에 사용됩니다. Anythin 임시. 불필요하게 DISTINCT 문을 사용하는 어리석은 개발자는이 부분을 부딪치게됩니다. 플러스 임시 테이블.

2 : 아니오 드문 경우이지만이 경우는 드문 경우입니다. Tempdb 정리 ... 서버를 다시 시작하십시오. Tempdb는 시작할 때마다 완전히 다시 생성됩니다. 그런 다음 tempdb로 이동하는 쿼리를 찾으십시오. 이렇게하려면 몇 가지 수동 작업이 필요합니다. DISTINCT 절이 불필요하게 사용되었는지 확인하십시오.

+0

안녕하세요 TomTom! 제어판에서 SQL Server 서비스를 다시 시작하면 임시 데이터베이스가 축소됩니까? 그렇다면이 점을 증명할 문서가 있습니까? Google에서 찾지 못했습니다. – George2

+0

또 다른 질문은 임시 데이터베이스가 성능에 영향을 주는지 여부입니다. – George2