Это дополнительный вопрос к вопросу о переполнении стека
Как узнать статистику чтения / записи таблицы SQL Server?
Цель такая же, как и в предыдущем вопросе
Цель здесь - узнать соответствующий коэффициент заполнения для индексов
Согласно ответу Митча Уита, он предположил, что
... обычные таблицы используют коэффициент заполнения по умолчанию 90%, таблицы с высокой вставкой где-то между 70-85% (в зависимости от размера строки). Таблицы только для чтения могут использовать коэффициент заполнения 100%
Даже после того, как я узнал статистику индекса, у меня возникли проблемы с осмыслением результата.
Как вы определяете является ли стол высокий
Вы должны взять все статистика вроде leaf_insert_count
, leaf_delete_count
, user_seek/scan/lookup_count
и т.д. во внимание?
или мне нужно будет посмотреть только несколько доменов?
Я бы хотел увидеть что другие способы нужно определить, как определить коэффициент заполнения для конкретного индекса.
Запрос, используемый для получения статистики индекса,
select db_name(US.database_id)
, object_name(US.object_id)
, I.name as IndexName
, OS.leaf_allocation_count
, OS.nonleaf_allocation_count
, OS.leaf_page_merge_count
, OS.leaf_insert_count
, OS.leaf_delete_count
, OS.leaf_update_count
, *
from sys.dm_db_index_usage_stats US
join sys.indexes I
on I.object_id = US.object_id
and I.index_id = US.index_id
join sys.dm_db_index_operational_stats(db_id(), null, null, null) OS
on OS.object_id = I.object_id and OS.index_id = I.Index_id
where I.type <> 0 -- not heap
and object_name(US.object_id) not like 'sys%'
order by OS.leaf_allocation_count desc,
OS.nonleaf_allocation_count desc,
OS.leaf_page_merge_count desc,
US.User_updates desc,
US.User_Seeks desc,
US.User_Scans desc,
US.User_Lookups desc
И примерный результат.
Я задал аналогичный вопрос, но специально для кластерных индексов, состоящих из полей идентификации. Были хорошие ответы:
Я решил глобально установить коэффициент заполнения для всех таблиц / индексов на 80%, а для таблиц с идентичными кластеризованными индексами - 90%.
Я ежедневно удаляю фрагментацию - восстанавливаю индексы с фрагментацией> = 30% и реорганизую индексы> 5% и <30%.
Я записываю эти действия в таблицу, которую периодически просматриваю и использую в качестве руководства для повышения / понижения коэффициентов заполнения.
Фактор заполнения - это то, с чем вам нужно поиграть, пока вы не получите правильную настройку.
Неважно, насколько высока правая таблица. 80% не всегда может быть хорошим числом. Если значения всегда будут в порядке, используйте 100%. Нет смысла оставлять свободное место на странице, если оно вам не нужно.
Если у вас есть индекс, когда новые значения будут повсюду, вам понадобится более высокий коэффициент заполнения. Если вы индексируете GUID (и не создаете GUID по порядку), тогда может потребоваться коэффициент заполнения 50% (в зависимости от скорости вставки таблицы, частоты перестроения индекса и т. Д.).