2009-07-11 3 views
3

Я новичок в SQL Server коэффициент заполнения 2008, как уже упоминалось здесь, в SQL Server 2008 BOL,заливка фактор SQL Server 2008

http://msdn.microsoft.com/en-us/library/ms177459.aspx

Мои 2 путанице,

  1. ли заполнить фактор применяется к странице индекса? Или применяется как к странице индекса, так и к данным? В начале кажется, что коэффициент заполнения применяется только к странице индекса - «Опция fill-factor предоставляется для точной настройки хранения и производительности индексных данных», но в конце упоминается - «Если существующие строки будут обновляться с помощью данные, которые удлиняют размер строк, используют коэффициент заполнения менее 100. Дополнительные байты на каждой странице помогут минимизировать разбиение страниц, вызванное дополнительной длиной в строках. ". Любые комментарии?

  2. Включен ли фактор заполнения только для восстановления индекса/создания индекса (только для восстановления/создания индекса будет использоваться свободное пространство, зарезервированное по коэффициенту заполнения) или применяется к любой операции вставки/обновления (любая операция вставки/обновления будет использоваться свободное пространство зарезервировано по коэффициенту заполнения)?

спасибо заранее, Джордж

ответ

8

FILLFACTOR относится только к страницам индекса. Но улов здесь заключается в том, что если у вас есть кластерный индекс (и большинство таблиц), ваш FILLFACTOR будет по существу применяться к вашим данным, так как ваши данные живут внутри листовых узлов вашего кластерного индекса. В принципе, если у вас есть действительно доступная для чтения таблица, установите для FILLFACTOR значение 100 для всех своих индексов. Это даст вам самую маленькую и самую быструю таблицу для любой данной структуры индекса. Имейте в виду, что если вы установите FILLFACTOR на 100 для индексов на данные, которые будут изменены, вы настроитесь на расщепление страницы и, возможно, снизили производительность.

Слишком высокий уровень FILLFACTOR может повлиять на производительность при вставке/обновлении. При изменении достаточного количества данных вы получите разбивку страницы. Это часть внутренней природы B-tree index structure - она ​​автоматически балансирует дерево. Если вы хотите настроить FILLFACTOR на явный параметр, BOL говорит, что это вступает в силу только при восстановлении индекса.

+0

Спасибо Dave, 1. «Это вступает в силу только при восстановлении индекса». - вы имеете в виду новую настройку коэффициента заполнения (предположим, что я меняю значение коэффициента заполнения явно) вступает в силу только при восстановлении индекса? 2. операция обновления будет использовать коэффициент загрузки, потому что значение индекса в B-дереве обновленного столбца может измениться и может быть перемещено с одной индексной страницы на другую страницу индекса (так что если зарезервированная площадь целевой страницы назначения не будет отображаться на странице Трещина)? – George2

+1

Да. Если вы установите FILLFACTOR по индексу с помощью ALTER INDEX, вам нужно будет его перестроить, чтобы ваши новые настройки вступили в силу. UPDATE может определенно вызвать разделение страницы в описываемом вами сценарии. –

+0

Привет, Дейв, извините, глупый вопрос, alter index всегда приведет к восстановлению индекса? так тяжелая операция. – George2

0

Коэффициент заполнения дает информацию о .., так как много места доступно на странице SQL, которая по умолчанию равна 8 кбайт. Для примера .. Предположим, что FF = 20%, что означает 100-20 = 80% пробела. Значение по умолчанию Коэффициент заполнения составляет 100, 100-100 = 0% заполненного пробела