web-dev-qa-db-ja.com

SQL Serverフルテキストインデックスのクロール:完了したかどうか

SQL Server 2012を使用しています。1つのフルテキストインデックスを持つ1つのテーブルがあります。インデックス付けされた列のデータ型がTEXTからVARCHAR(MAX)に変更されたため、そのインデックスは削除され、午前8時頃に再作成されました。これらはログの関連エントリです:

2017-01-06 08:02:52.65 spid25s情報:テーブルまたはインデックス付きビュー '[Helpdesk]。[dbo]。[TicketPosts]'(テーブルまたはインデックス付きビューID '581577110'、データベースID 'に対して初期化されたフルテキストフルポピュレーション8 ')。母集団サブタスク:4。

2017-01-06 10:56:47.98 spid9s情報:テーブルまたはインデックス付きビュー '[Helpdesk]。[dbo]。[TicketPosts]'(テーブルまたはインデックス付きビューID '581577110'、データベースID 'のフルテキストフル作成が完了しました8 ')。処理されたドキュメントの数:7016145。失敗したドキュメントの数:0。再試行されるドキュメントの数:0。

2017-01-06 11:24:42.11 spid20s情報:テーブルまたはインデックス付きビュー '[Helpdesk]。[dbo]。[TicketPosts]'(テーブルまたはインデックス付きビューID '581577110'、データベースID 'に対して初期化されたフルテキスト自動作成8 ')。母集団のサブタスク:1。

2017-01-06 11:24:43.12 spid9s情報:テーブルまたはインデックス付きビュー '[Helpdesk]。[dbo]。[TicketPosts]'(テーブルまたはインデックス付きビューID '581577110'、データベースID 'のフルテキスト自動作成が完了しました8 ')。処理されたドキュメントの数:0。失敗したドキュメントの数:0。再試行されるドキュメントの数:0。

午前11時から午前11時24分の間に、TableFulltextItemCount OBJECTPROPERTYとTableFulltextDocsProcessed OBJECTPROPERTYは等しくなりました(最初のクロールのログに表示された処理済みドキュメントと同じでした)。

ただし、その間、TableFulltextPopulateStatus OBJECTPROPERTYが1(フルポピュレーション進行中)を返し、sys.dm_fts_index_population.completion_type_descriptionは「NONE」で、sys.fulltext_indexes.crawl_end_dateはnullでした。

なぜDMVは、ログが完了し、処理された数がアイテム数に等しいと言った後もずっとクロールがまだ進行中であると考えたのですか?その間何をしていましたか?

最初のクロールと2番目のクロールの間でデータは変更されなかったので、なぜ2番目のクロールが発生したのですか?

1
Mark Freeman

Change Tracking = AUTOが構成されているので、FULL TEXT INDEXで行われた変更を確認するようSQL Serverに指示しています。つまり、プロセスはまだ低レベルで実行されています。

フルテキストインデックスサービスが変更をチェックしているので、なんらかの活動に驚かされることはありません。

SQL Server 2012のフルテキストインデックスに入力

2013年に同様の質問がここで行われました。

全文検索入力ステータス-処理通知

フランクJガルシアの回答からの引用:

SQL Serverは、最後の作成以降のベーステーブルへの変更を追跡するテーブルを維持するため、変更の追跡に関連する小さなオーバーヘッドがあります。変更の追跡が使用される場合、SQL Serverは、更新、削除、または挿入によって変更されたベーステーブルまたはインデックス付きビューの行のレコードを維持します。

1
RLF