1

ETL プロセスのパフォーマンスに問題があります。40 億行以上のテーブルがあります。構造は次のとおりです。

  • idbigint ID(1,1)
  • raw_urlvarchar(2000) が null ではない
  • md5hashchar(32) が null ではない
  • job_control_numberint null ではない

id のクラスター化された一意のインデックスと md5hash の非クラスター化の一意のインデックス

SQL Server 2008 エンタープライズ ページ レベルの圧縮がオンになっています

Web サーバー ログから生の URL をディメンションとして保存する必要があります。生の文字列が 900 文字を超えるため、その列に一意のインデックスを配置することはできません。md5 ハッシュ関数を使用して、インデックス作成用の一意の 32 文字の文字列を作成します。テーブル内で重複する raw_url 文字列を許可することはできません。

問題はパフォーマンスの低下です。もちろん、md5hash は本質的にランダムであるため、インデックスの断片化は 50% に達し、非効率的な IO につながります。

これを構造化して、挿入と検索のパフォーマンスを向上させ、インデックスの断片化を減らす方法についてのアドバイスを探しています。

4

2 に答える 2

1

テーブルを物理ファイルに分割し、古い変更されていないデータを読み取り専用ファイルグループに入れます。非クラスター化インデックスもファイルグループに含まれていることを確認してください。

編集(コメントから):そして、私がそれについて考えている間、ページレベルの圧縮をオフにすると、I/Oも改善されます。

于 2009-09-14T14:39:26.700 に答える