全文索引抓取停留在 has_crawl_completed 0

问题描述 投票:0回答:1

在包含数百个表的约 100GB 数据库上,我为每个表创建了全文目录。我一开始就将所有更改跟踪设置为“关闭”。经过一天多的时间,大部分索引已经爬完,但还有一些索引还没有爬完。在

sys.fulltext_indexes
中,这些索引的
has_crawl_completed
仍然显示
0

参考如何知道SQL全文索引填充何时完成?的答案,我检查了这些未完成索引对应的目录的PopulateStatus。有一个目录处于

Full Population In Progress
状态,还有一些目录处于
Idle
状态。

我可以做些什么来监控

Full Population In Progress
中的目录吗?
Idle
但爬行不完整的目录意味着什么 - 如果这些索引的目录已经是
Idle
,那么这些索引的用途是什么?

sql-server full-text-search fulltext-index
1个回答
0
投票

在处理 SQL Server 全文索引时,了解索引过程可能处于的各种状态和状况非常重要。以下是如何监视和了解全文索引过程的状态:

  1. 监控全文目录和索引

    a. Full Population In Progress:当目录处于此状态时,意味着全文索引的初始完全填充仍在进行中。根据数据库的大小和全文索引的复杂性,此过程可能需要大量时间。您可以通过定期查询

    sys.fulltext_indexes
    视图以查看相应索引的
    has_crawl_completed
    列是否更改为 1 来监控完整填充的进度。

    b. 空闲状态:空闲状态意味着全文索引服务没有主动处理任何新的更改或更新。在不完整爬网的情况下,这可能表明这些索引的索引填充过程遇到了一些问题或正在等待资源可用。即使目录处于空闲状态,不完整的爬网表明仍然存在需要索引的文档或更改。

  2. 监控不完整的爬网

    如果对应的目录处于Idle状态,但有索引尚未完成爬取,您可能需要调查爬取过程尚未完成的原因。可能的原因可能包括:

    • 资源争用:确保有足够的系统资源(CPU、内存、磁盘 I/O)可用于完成索引过程。
    • 长时间运行的查询:检查任何可能阻塞索引过程的长时间运行的查询或事务。
    • 错误或问题:在 SQL Server 错误日志或全文索引日志文件中查找任何错误消息或警告,它们可能提供有关爬网过程不完整原因的线索。
    • 检查特定表或文档:确定是否存在导致爬网过程停滞或失败的特定表或文档。您可以使用 SQL Server Profiler 或扩展事件等工具来捕获和分析与全文索引过程相关的查询。
  3. 恢复或重新启动人口

    如果您遇到爬网不完整的问题,您可能需要考虑重新启动或恢复受影响索引的填充过程。您可以通过删除并重新创建全文索引或使用

    ALTER FULLTEXT INDEX...START FULL POPULATION
    语句启动索引的完整填充来完成此操作。

  4. 定期监控和维护:

    定期监控全文索引和目录的状态并执行例行维护任务(例如更新统计信息、重建索引和优化查询)以确保最佳性能和可靠性非常重要。

通过仔细监控全文索引和目录的状态并调查出现的任何问题或错误,您可以确保全文索引过程顺利高效地运行。

© www.soinside.com 2019 - 2024. All rights reserved.