Коэффициент заполнения вступает в действие только тогда, когда индекс создается или перестраивается. Это количество потребления для индекса страниц конечного уровня, которые заполняются во время этих операций. ( см. примечание ниже для получения дополнительной информации об уровнях затронутой страницы )
Когда есть команда DML для данных ( INSERT
, UPDATE
и / или DELETE
), это произойдет с соответствующими затронутыми индексами. Другими словами, если у вас есть страница, заполненная на 20%, и вы вставляете данные на эту страницу, страница будет содержать более 20% данных (скажем, 35% только для примера). Сделайте еще одну вставку, теперь страница заполнена на 64%. Перестройте индекс, и теперь на страницах конечного уровня будет содержаться относительный процент пространства, который вы укажете (или неявно значение по умолчанию для сервера).
( Обратите внимание , что если вы не укажете, PAD_INDEX
чтобы быть ON
, коэффициент заполнения применяется только к страницам конечного уровня. Но когда вы установите PAD_INDEX = ON
, коэффициент заполнения будет учитываться для страниц индекса промежуточного уровня. По умолчанию этоOFF
)
Причина для настройки коэффициента заполнения (вместо использования значения по умолчанию 100/0) такова, что вы минимизируете разбиение страницы при вставке или обновлении данных. Но имейте в виду, ничего не бесплатно. Чем ниже коэффициент заполнения, тем больше места обычно занимают данные. Если вы сохраняете 80% свободного пространства страниц для своих индексов, они будут занимать относительно больший объем дискового пространства, что может привести к большему количеству операций чтения.
Насколько я понимаю, когда данные будут вставлены, на страницах будет примерно 20% данных. Однако когда данные обновляются, они расширяются до более чем 20% индекса, вплоть до его заполнения и создания разбиения страницы, верно?
Когда данные вставлены, они будут вставлены в соответствующие индексы на соответствующей странице. Это может и, скорее всего, приведет к тому, что потребление страниц будет выше, чем коэффициент заполнения.
Разделение страницы произойдет, когда новые данные будут добавлены на полную страницу индекса. Затем SQL Server разделит страницу и приблизительно поместит половину данных с полной страницы на новую страницу. Опять же, коэффициент заполнения здесь не играет роли.
Приемлемой причиной снижения коэффициента заполнения было бы сведение к минимуму разбиений страниц, что сводит к минимуму фрагментацию индекса страницы