Как определить, когда необходимо сделать D&L

Готовим статьи для FAQ
Аватара пользователя
Arelav
Администратор
Сообщения: 1881
Зарегистрирован: 25 мар 2005, 17:05
Откуда: Progress Technologies
Контактная информация:

Как определить, когда необходимо сделать D&L

Сообщение Arelav » 25 мар 2007, 15:29


    1. Использование dbanalys`а для определения необходимости D&L
    2. Что означает “Record Scatter Factor”, показанный в dbanalys`е?
    3. Что означает “Index Factor” указанный в idxanalys`е?

    Перезагрузка данных необходима для обеспечения хранения данных таблицы в единых блоках, которые должны располагаться последовательно на диске. Последовательный доступ также существенно улучшает сам процесс перезагрузки, т.е. наименьший разброс данных при загрузке произойдет, если сначала загружать таблицы с наименьшим размером средней записи, а с самым большим средним размером в конце.

    Существует два ключевых показателя, на которые стоит опираться при принятии решения о перезагрузки данных, это Index factor и Scatter factor, полученные с помощью dbanalys`а:

    proutil dbname -C dbanalys



    Record Scatter Factor или Показатель фрагментации записей:

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


    Более низкий показатель означает, что блок, содержащий запись таблицы будет содержать и другие записи той же таблицы.

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

    Показатель фрагментации является хорошим указателем качества фрагментации записей только тогда, когда его значение равно единице, или чем меньше это значение, тем лучше. Опыт показывает улучшение производительности после перезагрузки данных, когда значение показателя варьировалось между 4.0 и 4.5 в таблицах с количеством записей более 100.

    Начиная с версии Progress 9.x в архитектуру базы данных были введены так называемые «Storage areas» или Области памяти, которые позволяют влиять на показатель фрагментации таблицы выделяя ее в отдельную область и подбирая соответствующий RPB (Record per block). Подобное распределение позволяет вообще исключить необходимость в перезагрузке данных.

    Index Factor или Показатель индексации:

    Индексный показатель является численным представлением неиспользованного пространства в индексных блоках базы данных. Это процент соотношения используемого пространства индексными блоками к возможности более компактного их размещения.

    Индексный показатель варьируется в следующих пределах:
    1.0 - 1.5: Индекс в хорошем состоянии
    1.5 - 2.0: Индекс возможно нуждается в уплотнении
    2.0 и более: Индекс нуждается в уплотнение

    Если индекс уплотнен, он занимает меньше пространства в базе данных и использует меньше памяти, т.к. все индексные блоки заполнены.
    Количество индексных уровней должно уменьшиться после уплотнения. Это означает, что доступ к записи будет происходить быстрее, из-за меньшего количества обращений к базе данных.

    Использование idxbuild не имеет значительного эффекта в уплотнении, поскольку в этот момент используются свободные блоки базы данных. В результате, уже использованные блоки ни когда не будут заполнены до конца.

    Начиная с версий Progress 9.x появилась возможность online-уплотнения индексов, которая позволяет не прибегать к переиндексации, а следовательно, и к повторному созданию индекса:

    proutil dbname -C idxcompact Table.Index [percentage]

    Другое, не документированное, средство это:

    proutil dbname -C idxblockreport PUB.tablename.indexname

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

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

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

    После перезагрузки данных, сформируйте dbanalys, который будет считаться отправной точкой при последующем анализе базы данных. Т.е. dbanalys сформированный сразу после перезагрузки данных, показывает наиболее благоприятные значения, и следующие данные можно сравнивать именно с ними, для принятия решения о новой перезагрузке данных.