Программирование >>  Программирование баз данных 

1 ... 249 250 251 [ 252 ] 253 254 255 ... 346


Опции параметра ©action рассматриваются в табл. 21.5. Таблица 21.5. Опции параметра ©action

Опция

Описание

create

drop

activate

deactivate

start change tracking

stop change tracking

start background updateindex

stop background updateindex

update index

start full

start incremental

stop

Опция create разрешает использование полнотекстового поиска для таблицы, указанной в параметре ©tabname

Опция drop переводит процесс полнотекстового поиска для данной таблицы в неактивное состояние и удаляет полнотекстовый индекс из каталога

Если на таблице полнотекстовый поиск переведен в неактивное состояние, то опция activate снова его активизирует. Если отслеживание изменений разрешено, то выполнение процедуры sp f ulltext table с этой опцией приводит также к запуску операции заполнения с началом следующего запланированного прогона процедуры заполнения

Опция deactivate позволяет запретить применение таблицы в полнотекстовом поиске, но оставить все данные, полученные в результате заполнения, нетронутыми, чтобы их можно было использовать после повторной активизации таблицы

Если таблица содержит столбец с временными отметками (требуемый для инкрементных обновлений), то опция start change tracking запускает инкрементное заполнение полнотекстового индекса. Если столбец с временными отметками не существует, то данная опция запускает процесс полного заполнения полнотекстового индекса. Повторное заполнение (которое может быть определено как инкрементное или полное) осуществляется автоматически (причем такое заполнение может производиться немедленно или при следующем запланированном прогоне процедуры заполнения, в зависимости от других настроек), если происходят какие-либо изменения в столбцах таблицы с типами данных, отличными от BLOB

Опция stop change tracking указывает, что должно быть прекращено отслеживание изменений. Применение этой опции не влияет на уже осуществляемые процессы заполнения, но приводит к отмене автоматического заполнения, производимого на основе изменений

Опция start background updateindex позволяет немедленно начать заполнение индекса на основе любых изменений, обнаруженных в результате отслеживания изменений. Данные обо всех последующих обновлениях добавляются к индексу немедленно

Опция stop background updateindex позволяет остановить процесс немедленного заполнения

Опция update index вызывает немедленное применение к полнотекстовому индексу всех изменений, обнаруженных в процессе отслеживания изменений, которые еще не были применены

Опция start f ull позволяет немедленно начать процедуру полного заполнения применительно к целевому индексу

Опция start incremental обеспечивает немедленный запуск инкрементного заполнения применительно к целевому индексу

Опция stop позволяет остановить проводимый процесс заполнения



Дополнительные сведения о заполнении полнотекстовых индексов

в отличие от обычных индексов SQL Server, средства поддержки которых в актуальном состоянии заложены в самом программном обеспечении SQL Server и определены используемым способом хранения данных, полнотекстовые индексы существуют отчасти вне области действия СУБД SQL Server, поэтому требуют определенного вмешательства пользователя, без которого индекс невозможно привести в то состояние, которое полностью отражает содержание фактических данных, представляемых с помощью индекса.

Предусмотрены три основных способа заполнения полнотекстовых индексов (точнее, два, поскольку третий способ скорее можно назвать промежуточным). Ниже приведено описание каждого из этих способов.

Полный. Этот способ обеспечивает полное заполнение индекса. При проведении операции полного заполнения в СУБД SQL Server по существу уничтожаются все результаты проведения предыдущего заполнения и формирование полнотекстового индекса начинается с нуля. Происходит повторный просмотр каждой строки, и индекс создается с самого начала.

Инкрементный. Этот способ основан на том, что в СУБД SQL Server используется столбец типа timestamp (временная отметка) для контроля над тем, в каких полях таблицы произошли изменения, начиная со времени последнего заполнения. В этом случае СУБД SQL Server должна лишь регистрировать изменения, происшедшие в тех строках, которые изменились по той или иной причине. Для применения этого способа требуется, чтобы рассматриваемая таблица имела столбец с временнъши отметками. Любые обновления, не вызывающие изменения временной отметки (к ним относятся нерегистрируе-мые операции, обычно связанные с обработкой данных типа BLOB), не обнаруживаются, поэтому информация об изменениях в строке накапливается, только если дополнительно к этому происходят какие-то др\тие изменения.

Отслеживание изменений. В этом способе предусматривается отслеживание фактически происшедших изменений, начиная со времени последнего заполнения. При такой организации работы обеспечивается возможность поддерживать полнотекстовые индексы в актуальном состоянии почти в реальном времени, но следует учитывать, что заполнение полнотекстового индекса требует больших затрат ресурсов процессора и оперативной памяти, поэтому может вызвать перегрузку сервера; это означает, что должен быть найден компромисс между стремлением обеспечить немедленное распространение обновлений и необходимостью откладывать такое распространение до того времени, когда нагрузка сервера станет минимальной.

Если не используется отслеживание изменений, то заполнение полнотекстовых индексов происходит только тогда, когда этот процесс запускается вручную или в соответствии с установленным расписанием заполнения. Отслеживание изменений может осуществляться в одном из двух вариантов: запланированное распространение или фоновое обновление. Первый вариант предусматривает применение отслеживаемых изменений через запланированные интервалы, а во втором варианте процесс заполнения по с)7цеству постоянно функционирует в фоновом режиме и обеспечивает



применение изменений с максимально возможным быстродействием, сразу после их внесения.

Очевидно, что каждый раз после первоначального создания полнотекстового индекса или модификации списка столбцов, участвующих в индексе, необходимо полностью повторно заполнить индекс (ведь даже инкрементное заполнение индекса, который перед этим был пустым, требует просмотра каждой строки индексируемой таблицы). Такое повторное заполнение может быть выполнено на уровне каталога или на уровне таблицы. 1Сшс правило, применительно ко вновь добавленным или измененным индексам повторное заполнение осуществляется на уровне таблицы, а что касается обычного сопровождения, то повторное заполнение происходит на уровне каталога.

Итак, учитывая сказанное, мы можем приступить к заполнению полнотекстового индекса, созданного для таблицы Production. ProductModel. Если бы в операторе создания полнотекстового индекса не были явно заданы ключевые слова N0 POPULATION, то средствами SQL Server индекс был бы заполнен автоматически, но, поскольку указано, что индекс заполнять не следует, теперь мы сами должны взять на себя эту обязанность и распорядиться о заполнении. Поскольку это - первое заполнение, по-видимому, нам следует выполнить полное заполнение (откровенно говоря, команда, требующая инкрементного заполнения, привела бы к тому же результату, поэтому фактически выбор режима заполнения не имеет значения, но вариант с полным обновлением выглядит более оправданным). Команда, составленная с использованием нового синтаксиса, принимает примерно такой вид:

alter fulltext index on Production.ProductModel START FULL POPULATION

Операция полнотекстового заполнения выполняется в виде фонового процесса. Как и следует предположить, сразу после успешного запуска задания, связанного с заполнением, применяемая команда возвращает сообщение completed successfully (завершено успешно). Но это сообщение не означает, что заполнение индекса действительно закончено, поскольку осуществление этой операции по отношению к крупной таблице может потребовать несколько часов.

Применявшийся ранее синтаксис предусматривает использование той же хранимой процедуры, которая уже рассматривалась в настоящей главе,- sp fulltext table. Рассмотрим, как применить эту процедуру к таблице Production. ProductModel:

EXEC sp fulltext table ©tabname = Production.ProductModel ©action = start full

Обратите внимание на то, что в вызове этой процедуры не применяются такие опции, как имя полнотекстового каталога и имя ключа, поскольку они предназначены исключительно для создания полнотекстового индекса. Во всех прочих операциях эти опции не должны использоваться.

Поскольку рассматриваемая таблица относительно мала, то не приходится особенно долго ждать, прежде чем появится возможность выполнить запрос к этой таблице и получить результаты:

select ProductModellD, Name FROM Production.ProductModel WHERE CONTAINS(Name, Frame)



1 ... 249 250 251 [ 252 ] 253 254 255 ... 346

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика