Читайте также: |
|
Если установить значение опции fillfactor в значение между 1 и 99, тоновая индексная структура будет создана со страницами листьев, которые не будут заполнены полностью. Чем больше значение fillfactor, тем меньше объем памяти, который остается свободным на индексной странице. Например, установка опции fillfactor в значение 60 означает, что 40% на каждой странице листа индекса остается свободным для дальнейшего добавления строк индекса. (Индексная строка будет добавлена, когда выполняется либо оператор insert, либо оператор update.) По этой причине значение 60 будет разумным решением для таблиц с довольно частым изменением данных.
Разумный выбор значения коэффициента заполнения уменьшает количество операций разбиения страниц, при этом добавление данных в базовую таблицу происходит за счет выделения дополнительного пространства для расширения индекса.
В большинстве случаев рекомендуется принимать значение по умолчанию, равное 0. Когда коэффициент заполнения имеет значение 0, конечный уровень полностью заполнен.
При добавлении новой строки на полностью заполненную страницу компонент Database Engine перемещает половину имеющихся на ней данных на новую страницу, таким образом освобождая пространство для новой строки. Такая реорганизация называется разбиением страницы. Операция разбиения страницы позволяет выделить пространство для размещения новых записей, однако является ресурсоемкой и может выполняться длительное время.
Также указанная операция может вызвать фрагментацию, что приводит к увеличению количества операций ввода-вывода. Для предотвращения слишком частого разбиения страниц необходимо перераспределить данные, перестроив индекс с помощью нового или уже существующего коэффициента заполнения.
Например, при указании для коэффициента заполнения значения 80 на каждой странице конечного уровня будет зарезервировано 20 процентов занимаемого ею дискового пространства. Данное дисковое пространство будет использовано для расширения индекса при добавлении в базовую таблицу новых данных. Пустое место резервируется не в конце страницы, а между строками индекса каждой страницы.
Хотя низкое значение коэффициента заполнения (отличное от 0) может снизить необходимость в разбиении страниц при расширении индекса, для его хранения требуется больший объем памяти, что приводит к снижению производительности.
Даже для приложений, ориентированных на выполнение множества операций вставки и обновления, количество операций считывания обычно в 5 — 10 раз превышает количество операций записи. Поэтому при задании значения коэффициента заполнения, отличного от значения по умолчанию, производительность операций считывания снижается обратно пропорционально значению коэффициента заполнения. Например, значение коэффициента заполнения, равное 50, может снизить производительность операций чтения в два раза. Производительность операций чтения снижается из-за того, что в индексе содержится большее количество страниц, что увеличивает количество операций ввода-вывода, проводимых для извлечения данных.
Ненулевой коэффициент заполнения может быть полезен для производительности, если новые данные равномерно распределяются по таблице. Однако, если данные добавляются в конец таблицы, пустое место заполняться не будет. Например, если ключевым столбцом индекса является столбец IDENTITY, ключ для новых строк будет постоянно увеличиваться и строки будут логически добавляться в конец таблицы. В этом случае разбиение страницы не приведет к снижению производительности. Можно использовать коэффициент заполнения по умолчанию, равный нулю, или указать коэффициент заполнения 100, чтобы заполнялся конечный уровень.
Дата добавления: 2015-08-05; просмотров: 56 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Полнотекстовые индексы. | | | Развитие коммунальной техники |