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

1 ... 247 248 249 [ 250 ] 251 252 253 ... 346


Опция change tracking

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

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

Различные значения параметра CHANGE TRACKING определяют три уровня поддержки, связанных с отслеживанием изменений, которые описаны в табл. 21.2.

Таблица 21.2. Значения параметра changetracking

Параметр

Описание

off При использовании значения off полнотекстовый индекс обновляется только

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

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

auto При использовании значения auto в СУБД SQL Server постоянно происходит

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

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



Окончание табл. 21.2

Параметр Описание

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

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

Ключевое слово no population

Ключевое слово N0 POPULATION применяется, только если выбран режим отслеживания изменений, основанный на использовании значения OFF.

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

Модификация полнотекстовых индексов

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

ALTER FULLTEXT INDEX ON <table name> { ENABLE

DISABLE

SET CHANGE TICKING { MANUAL AUTO OFF } I ADD (<column name> [TYPE COLUMN <type column name> ] [LANGUAGE <language alias>] [,...n] ) [WITH NO POPULATION]

I DROP (<column name> [,...n] ) [WITH NO POPULATION]

START { FULL INCREMENTAL UPDATE } POPULATION STOP POPULATION

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



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

Ключевое слово enable/disable

Назначение каждого из ключевых слов ENABLE и DISABLE соответствует их названию. После того как использование полнотекстового индекса будет запрещено с помощью ключевого слова DISABLE, индекс остается на месте и все его данные больше не подвергаются изменениям. Изменяется лишь то, что индекс становится недоступным для полнотекстовых запросов, а данные индекса не обновляются (все обновления, выполнявшиеся ко времени вызова оператора ALTER с ключевым словом DISABLE, немедленно останавливаются).

А после вызова на выполнение оператора ALTER с ключевым словом ENABLE работа возобновляется с того места, с которого было прекращено обновление индекса (по-видимому, чтобы привести индекс в актуальное состояние, потребуется очень много сделать, но по крайней мере все данные в нем остались нетронутыми и не нужно проводить полное повторное заполнение).

Ключевое слово add

Ключевое слово ADD предназначено исключительно для ввода дополнительных определений столбцов. Например, оператор модификации индекса, в котором предусмотрено добавление столбца Instructions к полнотекстовому индексу, заданному на таблице Production. ProductModel, может выглядеть примерно так:

ALTER FULLTEXT INDEX ON Production.ProductModel ADD ( Instructions )

Свойства LANGUAGE и TYPE COLUMN применяются точно так же, как в описанном выше операторе CREATE.

Ключевое слово drop

Ключевое слово DROP также действует в соответствии с ожиданиями. Например, чтобы удалить только что добавленный столбец Instructions, необходимо ввести следующую команду:

ALTER FULLTEXT INDEX ON Production.ProductModel DROP ( Instructions )

Ключевое слово start. . .population

Ключевое слово START. . . POPULATION позволяет у1сазать один из трех режимов заполнения индекса.

Опция full

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



1 ... 247 248 249 [ 250 ] 251 252 253 ... 346

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