可以使SQL Server 2000填充全文目录而不阻塞它正在读取的表吗?

时间:2009-02-23 11:19:22

标签: sql-server blocking full-text-search

我在SQL Server 2000上有一个数据库服务器(是的,我知道......),在其某些表上有全文目录。我现在正在安静的时间过夜,我希望能够在白天更新目录,以便在搜索中考虑新数据。

我注意到的问题是,当增量填充运行时,由人口过程引起的阻塞量相当大。此数据库上的其他事务使用“read uncommitted”或脏读,以最大限度地减少延迟(我不特别关心最新的准确数据)所以我不确定为什么人口,本身只是读取数据,阻止它们。

任何线索,提示?

1 个答案:

答案 0 :(得分:1)

简短的故事:不,直到最近更新SQL Server 2008之前情况并没有好转。2008年的RTM版本有这些相同的问题,正如我们在此处记录的那样:

http://www.brentozar.com/archive/2008/11/stackoverflows-sql-2008-fts-issue-solved/

解决方法是使用对您的预算和工作负载有意义的最快存储子系统。全文目录需要与数据和日志位于不同的阵列上,这样他们才能更快地完成人口。

您还提到您阅读会导致锁定感到惊讶。我们有关于SQLServerPedia的文章解释了SQL Server的锁定过程,如下所示:

http://sqlserverpedia.com/wiki/SQL_Server_Locking_Mechanism

如果您需要更具体的答案,请在人口中观看您的服务器。运行sp_who2,查看被阻止的查询,并运行DBCC INPUTBUFFER(spid)命令以找出他们的T-SQL是什么。这样您就可以确切地看到导致它的查询类型。如果你确定它是使用read uncommitted,请上传你的查询执行计划的副本,我们可以帮助解释它以找出正在发生的事情。