0

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

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

任何线索,提示?

4

1 回答 1

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 是什么。这样你就可以准确地看到是什么类型的查询导致了它。如果您确定它正在使用未提交的读取,请上传您的查询执行计划的副本,我们可以帮助解释它以了解发生了什么。

于 2009-02-25T13:35:26.827 回答