2009-08-20 6 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もPKもありません。倉庫のインデックスだけです。チェック制約はありません - デフォルトの制約のみです。 DMVのために私が学ぶことができるリソースがありますか? –

+0

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