我在SQL Server 2000上有一个数据库服务器(是的,我知道......),在其某些表上有全文目录。我现在正在安静的时间过夜,我希望能够在白天更新目录,以便在搜索中考虑新数据。
我注意到的问题是,当增量填充运行时,由人口过程引起的阻塞量相当大。此数据库上的其他事务使用“read uncommitted”或脏读,以最大限度地减少延迟(我不特别关心最新的准确数据)所以我不确定为什么人口,本身只是读取数据,阻止它们。
任何线索,提示?
答案 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,请上传你的查询执行计划的副本,我们可以帮助解释它以找出正在发生的事情。