在生产环境中,我遇到了SQL Server 2008中的一些关键问题; 我们有一个包含FTS索引的数据库; 我们也有一个维护工作,重buildFTS指数并更新这样的统计数据:
alter fulltext catalog [ftCatalogName]重build更新统计信息[tableNameWithFtIndex]
这项工作周一,周一上午9点开始; 它在1分钟左右完成并且总是成功;
现在的问题是:每次作业结束后,sqlserver.exe进程的CPU就会高达99%。 经常CPU呆在70-80%左右(我知道这是非常高的,我们正在努力改善这一点); 如果我们停止所有前端服务器(我们有一个webfarm)的IIS,然后再次启动它们,唯一的办法就是让它回到正常状态(70-80%) – 这样CPU当IIS停止时,sqlserver.exe会变为0%;当IIS重新启动时,会回到70-80%;
我也分析了重build过程中CPU的行为: – 启动FTS重build作业(上面的语句) – sqlserver.exe CPU = 75%(正常); fdhost.exe = 20-25%(重build期间正常) – 作业在51秒内完成,fdhost CPU变为0%,sqlserver.exe变为99%并保持这种状态,直到我应用上述stream程(开始/停止前端服务器上的IIS)
有没有人有任何想法,为什么发生这种情况? 至less一个说明…或者一些方法来优化这个索引,并使其在重build时不需要资源…
先谢谢你!
您的陈述只是触发重build工作,而不是做。 所以 – 你通过ALTER FULLTEXT语句触发了这个工作,现在你可以等到它完成了:
WHILE (SELECT COUNT(*) FROM sys.fulltext_catalogs WHERE FULLTEXTCATALOGPROPERTY(name, 'PopulateStatus') IN (1, 6, 7, 9)) > 0 WAITFOR DELAY '0:00:00.1'