3

フルテキスト インデックスが作成されたテーブルに大量のレコードを挿入しようとしています。変更追跡を に設定しましたauto

レコードは、一度に通常約 50,000 の数で、別のテーブルから挿入されます。SQL Server 2008 では、完了までに 5 秒ほどかかります。しかし、2005 年のライブ環境で実行すると、10 分以上かかります。

実行プランを見ると、フルテキスト追跡テーブルのクラスター化インデックスへの挿入が問題になっているようです。主キー列は でuniqueidentifier割り当てられnewsequentialid()ます。しかし、2008 年は で 1 回のClustered Index Mergeを行いましたがfulltext_index_docidstatus、2005 年は で 50,000 回のClustered Index Insertfulltext_index_mapを行いました。

残念ながら、サーバーをアップグレードすることは現時点ではオプションではありません。変更追跡をオフにすると問題は解決しますが、人口を自分で管理するのはうまくいかないので、これは本当にやりたくありません。変更の追跡は、フルテキスト インデックスに表示される新しいレコードを取得するための最速の方法のようであり、優先事項です。

変更追跡を有効にしたまま、これを回避する方法はありますか?

4

1 に答える 1

2

問題の本質は、以前のバージョンでは外部の MSFTESQL サービスを使用していたのに対し、2008 年にフル テキスト エンジンが SQL Server 内に移動されたという事実にあると思われます。つまり、SQL 2008 ではフルテキスト インデックスを操作するときにセット ベースの操作を最大限に活用できますが、2005 では各行を個別に処理する必要があります。詳細については、このMicrosoft ホワイト ペーパーを参照してください。要するに、求めているパフォーマンスを達成するか、長い挿入時間で生きるには、変更追跡をオフにする必要があると思います。

于 2010-07-21T19:08:46.887 に答える