2009-08-20 4 views
0

SSIS를 사용하여웨어 하우스에 테이블을로드하고 있습니다. SSIS가 느리므로 테이블에 인덱스를 작성하는 것이 좋습니다.SSIS 작업을위한 인덱스 튜닝

이웨어 하우스에는 기본 키 (따라서 외래 키), 인덱스 (클러스터 또는 기타), 제한 조건이 없습니다. 즉, 100 % 효율이 없습니다.

새 쿼리와 현재 쿼리 성능을 분석하여 인덱스를 사용법에 따라 배치 할 것입니다.

SQL 구문과 실행 계획을 실제로 읽는 우리의 구식 땀과 쓸데없는 방법 대신, 나는 반짝이는 새로운 데이터베이스 엔진 튜닝 어드바이저를 사용할 생각입니다.

SSIS 패키지에서 SQL 로그 오프를 해제하고 "튜닝"추적을 실행하여이를 테이블에 저장하고 튜닝 관리자의 출력을 분석했습니다. 조회의 대부분은 완료로 :

exec sp_executesql N'SELECT [Active], [CompanyID], [CompanyName], [CompanyShortName], [CompanyTypeID], [HierarchyNodeID] FROM [dbo].[Company] WHERE ([CompanyID][email protected]) AND ([StartDateTime] IS NOT NULL AND [EndDateTime] IS NULL)',N'@P1 int',1

exec sp_executesql N'SELECT [Active], [CompanyID], [CompanyName], [CompanyShortName], [CompanyTypeID], [HierarchyNodeID] FROM [dbo].[Company] WHERE ([CompanyID][email protected]) AND ([StartDateTime] IS NOT NULL AND [EndDateTime] IS NULL)',N'@P1 int',2

exec sp_executesql N'SELECT [Active], [CompanyID], [CompanyName], [CompanyShortName], [CompanyTypeID], [HierarchyNodeID] FROM [dbo].[Company] WHERE ([CompanyID][email protected]) AND ([StartDateTime] IS NOT NULL AND [EndDateTime] IS NULL)',N'@P1 int',3

exec sp_executesql N'SELECT [Active], [CompanyID], [CompanyName], [CompanyShortName], [CompanyTypeID], [HierarchyNodeID] FROM [dbo].[Company] WHERE ([CompanyID][email protected]) AND ([StartDateTime] IS NOT NULL AND [EndDateTime] IS NULL)',N'@P1 int',4

분석 할 때, 이러한 진술은 이유 "이벤트가 어떤 테이블을 참조하지 않습니다"가. 응? FROM dbo.Company가 보이지 않습니까 ?? !! 여기서 무슨 일이 일어나고있는거야? 일괄 무엇을 제출하지 나는 내 추적에서 실행되는 실제 문을 캡처 할 수 어떻게

  1. :

    그래서, 나는 여러 질문이?

  2. SQL Server 2008에 대해 실행되는 SSIS 패키지와 관련된 성능 조정을 위해 따라야 할 모범 사례가 있습니까?

답변

1

웨어 하우스는 적어도 내 세계에서 항상 인덱스를 가지고 있습니다 :-). 쿼리가 실제로 기본이기 때문에 ETL로드는 일반적으로 인덱스하기 쉽습니다. 조회에서 창고 키를 더 빨리 가져 오도록 비즈니스 키 열의 색인을 만듭니다.

E.G. "Where [CompanyID] = @ P1) AND ([StartDateTime] IS NOT NULL 및 [EndDateTime] IS NULL)"CompanyID는 조회 키이고 인덱스가 필요합니다.

샘플에 표시되는 것은 매개 변수가있는 SQL입니다. 튜닝 마법사 대신 누락 된 색인 DMV를 사용하는 것을 고려 했습니까? 나는 개인적으로 그 방법을 좋아한다. 간단하고 직접적이다. 제안 된 모든 인덱스를 즉시 사용하지 마십시오. 실제로 구현하기에 현명한 판단이 필요합니다.

또한로드가 느린 경우 다른 원인 일 수 있습니다. 외래 키가 작동합니까? 대량로드입니까? (서버에 대량 삽입을 요청할 수 있고 대상 테이블의 클러스터형 및 클러스터되지 않은 인덱스의 세부 사항을 기반으로 요청을 무시할 수 있기 때문에 까다 롭습니다.)

+0

귀하의 의견을 바탕으로 편집 된 질문 . 나는 DMV를 사용하지 않고있다. 나는 창고에 단지 FK 또는 PKs가 없다. 검사 제약 조건 없음 - 기본값은 Constaints입니다. DMV를 배울 수있는 자료가 있습니까? –

+0

http://blogs.msdn.com/bartd/archive/2007/07/19/are-you-using-sql-s-missing-index-dmvs.aspx – onupdatecascade