2009-02-23 7 views
0

У меня есть сервер базы данных на SQL Server 2000 (да, я знаю ...) с полнотекстовыми каталогами в некоторых его таблицах. В настоящее время я делаю полное население в одночасье в спокойное время, и мне бы хотелось обновить каталоги в течение дня, чтобы новые данные могли учитываться при поиске.Можно ли создать SQL Server 2000 для заполнения полнотекстового каталога без блокировки таблиц, которые он читает?

Проблема, о которой я заметил, заключается в том, что при прохождении поэтапного населения происходит значительное количество блокировок, вызванных процессом популяции. Другие транзакции в этой базе данных используют «read uncommitted» или «грязные» чтения, чтобы свести к минимуму задержки (я не особенно забочусь о точных данных в точности до второй), поэтому я не совсем уверен, почему население, которое сам только считывает данные, блокирует их.

Любые подсказки, подсказки?

ответ

1

Краткая история: нет, и ситуация не намного лучше, до последних обновлений SQL Server 2008. В версии RTM 2008 были такие же проблемы, как описываемая здесь:

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, загрузите копию своего плана выполнения запросов, и мы сможем помочь интерпретировать его, чтобы узнать, что происходит.