Программирование баз данных MS SQL Server (1084479), страница 90
Текст из файла (страница 90)
Ьегчег указания на то, что за ней последует одна или несколько дополнительных опций. Структуры памяти и индексные структуры 8ЯЕ 8егтег 357 ОПЦИЯ РЛ1У Х1ЮЕХ Среди опций, определяемых в списке Н1ТН, опция РАО 1НРЕХ находится на первом месте, но после ознакомления с тем, для чего предназначена опция РАО 1МОЕХ, такой выбор места для ее определения кажется странным. Коротко можно отметить, что опция РАО 1НОЕХ определяет лишь то, насколько полным доллгно быть заполнение страниц индекса нелистовых уровней (в процентах) при первоначальном создании индекса.
Однако не следует задавать процентное значение опции РАН 1НОЕХ, поскольку в качестве относительной величины заполнения используется процентное значение, заданное в опции Р1ЬЬРАСТОН, которая следует за ней. Применение значения параметра РАР 1НОЕХ = ОН не имеет смысла, если не задана опция Р1ЕЬРАСТОН (именно поэтому кажется неоправданным решение поместить опцию РАН 1НОЕХ в начало списка опций). ОПЦИЯ л1ТБГАСТОЕ При первоначальном создании индекса в СУБД 8ОЕ 8егтег страницы по умолчанию заполняются настолько, насколько это возможно, за вычетом двух строк.
В качестве значения опции РТЕЕРАСТОН можно задать любое число от 1 до 100. Это число показывает, насколько полным должно стать заполнение страниц в процентах после завершения процесса создания индекса. Но следует учитывать, что при разбиении страниц данные все равно перераспределяются мелСду двумя страницами в равных долях. Это означает, что в процессе эксплуатации базы данных невозможно постоянно сохранять контроль над тем, в каком процентном отношении заполняются страницы индекса, иначе как путем регулярной перестройки индекса (а эту операцию действительно следует выполнять; информация о том. как подготовить график технического сопровождения для этой операции, приведена в главе 20). Опция РТЕЕРАСТОН применяется в тех случаях, когда требуется откорректировать используемое значение плотности заполнения страниц.
Рекомендации по выбору значения этой опции приведены ниже. О В системе ОЕТР рекомендуется применять низкие значения Р1ЕЕРАСТОН. с> В системе ОЕАР или в другой очень статичной системе (под этим подразумевается неподверженность системы изменениям, т.е. применение очень малого количества операций вставки и удаления) значение Р1ЬЬРАСТОН должно быть максимально возможным. С1 В системе с небольшим относительным количеством транзакций, но более значительным количеством запросов, предназначенных для получения отчетов, по-видимому, следует выбирать какое-то промежуточное значение (не слишком низкое н не слишком высокое). Если значение опции РТЕЕРАСТОН не задано, то СУБД 8(~Е 8егтег полностью заполняет страницы, за вычетом двух строк; при этом минимальное количество строк составляет одну строку в расчете на одну страницу (например, если строка имеет длину 8000 символов, то на странице может поместиться только одна строка, поэтому условие, согласно которому должно оставаться свободное место для размещения двух строк, не применяется).
358 Глава 9 Опций 1(:ЫОЕЕ ПОР КЕ1 Опция 16МОКЕ ООР КЕТ позволяет добиться чуть большего, чем просто обойти ограничения системы. Кратко можно отметить, что при использовании этой опции ограничение ОИ1ООЕ оказывает немного другое воздействие, чем в противном случае. При обычных обстоятельствах применение ограничения уникальности или уникального индекса приводит к тому, что не допускается вставка каких-либо дубликатов любого рода. В частности, если в транзакции предпринимается попытка создать дубликат на основе значения столбца, который определен как уникальный, то подобная попытка отвергается и производится откат транзакции. Но если задана опция 16ИОКЕ РОР КЕТ, то система действует немного иначе. Сообщение об ошибке все еще формируется, но возникающая при этом ошибка относится только к уровню предупреждения; тем не менее вставка строки все равно не выполняется. С точки зрения применения опции 15ИОЕЕ ООР КЕХ последняя особенность, согласно которой вставка строки все равно не выполняется, имеет принципиальную важность.
Дело в том, что дублирующаяся строка все равно отвергается, но для транзакции не формируется команда на выполнение отката (поскольку ошибка формируется как вызывающая предупреждающее сообщение, а не сообщение о критической ошибке). Очевидно, что опция 16МОКЕ РОР КЕТ может применяться как способ обеспечения вставки уникальных значений, применение которого, тем не менее, не приводит к нарушению работы транзакции, в которой предпринимается попытка вставить дубликат.
Каковым бы ни был процесс, в котором предпринимаются попытки вставить строку, рассматриваемую как дубликат, вполне возможно, с точки зрения организации этого процесса фактически не имеет значения то, что эта строка — дублирующаяся (в связи с этим не возникают какие-либо логические ошибки). Это означает, что функционирование процесса может быть организовано таким образом, что для него может иметь значение лишь наличие строки с определенным содержимым, независимо от того, была ли выполнена вставка искомой строки в этом или в другом процессе. Опций 1)ВОР ЕХ1ЗТ1ИС Если задана опция РЕОР ЕХ1ЯТ1ИО, то перед созданием нового индекса удаляется существующий индекс с именем, которое совпадает с именем создаваемого индекса. Эта опция обеспечивает гораздо более эффективное формирование индекса по сравнению с тем, когда происходит просто удаление и повторное создание существующего индекса, если он используется в сочетании с кластеризованным индексом.
Если в результате перестройки должен быть получен индекс, полностью совпадающий с существующим индексом, то СУБД Я~1. Ееггег определяет, что такой некластеризованный индекс не следует подвергать операции удаления и повторного создания, а при выполнении явно заданных операций удаления и создания поневоле приходится двалщы выполнять перестройку всех некластеризованных индексов с учетом изменения местонахождения строк. Если же структура индекса модифицируется с применением опции ОКОР ЕХ1ЕТ1ИО, то перестройка некластеризованных индексов осуществляется не два раза, а только один раз.
Более того, невозможно просто удалить и повторно создать индекс, сформированный с помощью ограничения, например, чтобы ввести в действие определенное значение коэффициента заполнения. А опция ОКОР ЕХТЕТ1ИО позволяет обойти это ограничение. Структуры памяти и индексные структуры ЯЯТ. Яегчег 359 Ойцйй ЯТЛ ТХЯТХСЯ ЕОЕЕСОМРОТЕ По умолчанию в СУБД ЯЯЬ Яегчег предпринимаются попытки автоматизировать процесс обновления статистических данных, относящихся к используемым таблицам и индексам. Выбирая опцию ЯТАТТБТ1СЯ МОРЕСОМРОТЕ, вы утверждаете, что берете ответственность за обновление статистических данных на себя.
А для того чтобы отменить эту опцию, необходимо вызвать на выполнение команду ОРОАТЕ ЯТАТ1ЯТ1СЯ, но не использовать повторно опцию БТАТ1ЯТ1СЯ МОЕЕСОМРОТЕ. Автор настоятельно рекомендует не использовать эту опцию. Дело в том, что статистические данные, относящиеся к индексу, используются оптимизатором запросов для определения того, насколько данный индекс способствует повышению производительности выполнения данного конкретного запроса. Статистические данные, касающиеся индекса, постоянно изменяются по мере увеличения и уменьшения объема данных, хранящихся в таблице, а также изменения конкретных значений в столбцах.
Сопоставив эти два факта, можно легко понять, что отказ от автоматического обновления статистических данных приведет к тому, что оптимизатор запросов будет выбирать способы выполнения запросов из устаревшей информации. А если средство автоматического обновления статистических данных останется действующим, это приведет к регулярному обновлению статистических данных (точные сведения о том, как часто будет происходить такое обновление, зависят от характера и частоты обновления таблицы). С другой стороны, отмена опции автоматического обновления статистических данных приводит к тому, что данные, применяемые оптимизатором запросов, становятся устаревшими или возникает необходимость ввести в действие график вызова на выполнение команды ОРОАТЕ ЯТАТ1ЯТ1СЯ вручную.
Опция ВОЕТ ХЕ ТЕяяРРВ Применение опции БОРТ 1М ТЕМРРВ имеет смысл, только если база данных гепрбЬ хранится на физическом жестком диске, отличном от того, где хранится база данных, в состав которой должен войти новый индекс. Функция распределения файлов по жестким дискам в основном относится к области деятельности администратора базы данных, поэтому в настоящем разделе будет дан лишь краткий обзор того, что означает эта опция и почему имеет смысл размещать базу данных сепрс3ь на отдельном физическом устройстве.