Как вы измеряете значение фактора заполнения SQL - PullRequest
8 голосов
/ 14 августа 2008

Обычно, когда я создаю индексы для таблиц, я обычно предполагаю, что Fill Factor должно основываться на обоснованном предположении о том, как будет использоваться таблица (много операций чтения или много записей).

Есть ли более научный способ определения более точного значения Fill Factor?

Ответы [ 2 ]

12 голосов
/ 14 августа 2008

Вы можете попробовать выполнить большой список реалистичных операций и посмотреть на очереди ввода-вывода для различных действий.

Существует множество переменных, которые управляют этим, например, размер каждой строки и количество записей против чтения.

В основном: высокий коэффициент заполнения = более быстрое чтение, низкий = более быстрая запись.

Однако не все так просто, поскольку почти все записи будут выполняться в подмножестве строк, которые необходимо найти в первую очередь.

Например: установите коэффициент заполнения равным 10%, и каждое обновление в одной строке будет занимать в 10 раз больше времени, чтобы найти изменяемую строку, даже если разделение страницы в этом случае будет маловероятным.

Как правило, вы видите коэффициенты заполнения от 70% (очень высокая запись) до 95% (очень высокое чтение).

Это что-то вроде искусства.

Я считаю, что хорошее представление о факторах заполнения - это страницы в адресной книге: чем плотнее вы упаковываете адреса, тем сложнее их изменить, но чем тоньше книга. Я думаю, что объяснил это лучше на моем блоге .

2 голосов
/ 14 августа 2008

Я бы придерживался мнения, что если вы стремитесь к повышению производительности, ваше время гораздо лучше будет потрачено в других местах: настройка схемы, оптимизация запросов и обеспечение хорошего охвата индекса. Коэффициент заполнения - это одна из тех вещей, о которой вам нужно беспокоиться, только когда вы знаете , что все остальное в вашей системе является оптимальным. Я не знаю никого, кто мог бы сказать это.

...