【问题标题】:full text catalog rebuild vs full text index start full populaton全文目录重建与全文索引开始完全填充
【发布时间】:2016-05-24 08:30:37
【问题描述】:

我有一个在 SQL Server 2012 中定期运行的两步作业。

  1. ALTER FULLTEXT CATALOG [CatalogName] REBUILD
  2. ALTER FULLTEXT INDEX ON [tblname] START FULL POPULATION

我没有得到第二步的目的,因为谷歌说在第一步本身 sql server 会重新创建目录并生成索引。

如果有人可以帮助我了解在执行上述两个步骤期间内部发生的情况,我将不胜感激。

【问题讨论】:

    标签: sql-server fulltext-index full-text-catalog


    【解决方案1】:
    ALTER FULLTEXT CATALOG [CatalogName] REBUILD 
    

    删除目录并创建新目录。如果此目录有许多索引,则此重建可能需要很长时间。

    ALTER FULLTEXT INDEX ON [tblname] START FULL POPULATION 
    

    仅重建其中一张表的索引。

    如果您在一个目录中的索引很少,则这两个步骤是相等的。但是,如果 Catalog 的大小要大得多并且包含许多索引,那么第一步会花费更多的时间来运行。

    【讨论】:

    • 我们有一对一的映射。一个目录包含一个索引对应一个表。我认为在这种情况下,我可以删除这两个步骤中的任何一个。我们是否有一个优于另一个的性能优势(我目前有大约 208386 行)?
    • 在这种情况下,这两个步骤是相等的。
    • 最初我认为这两个步骤会占用大量运行时间和事务日志空间。我删除了第 2 步,然后尝试再次运行该作业。它占用了超过 90 GB 的事务日志空间,并且仍然只运行了 20 万行。同样的作业也在 10 秒内在另一台服务器上运行。您能否建议我如何找到根本原因或可能阻碍这项工作的原因?
    • 不要中断进程并分配必要的日志。不要让它自动增长,它会减慢这个过程。您需要将事务日志空间预先增长到表大小的 2-3 倍。重建需要大量的日志。
    • 如果您停止作业,更改目录,请尝试手动删除并重新创建它,因为某些原因可能比重建更快。
    猜你喜欢
    • 1970-01-01
    • 2016-05-13
    • 1970-01-01
    • 2012-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多