понедельник, 21 марта 2011 г.

Статистика на уровне фрагментов и не только

Есть настолько очевидные вещи, 
что иногда удивляешься, 
почему их сделали 
совсем недавно

Как то я писал, что при работе с фрагментированными таблицами статистика обновляется целиком на всю таблицу. Получается что сервер делает лишнюю работу, если например новые данные добавляются в новые фрагменты, а старые данные, которые находятся в старых фрагментах не меняются. Если схема работы с данными в таблице такова, что данные добавляются и изменяются только в новом фрагменте, то в этом случае ясно, что статистика будет менятся только для этого фрагмента, а для старых фрагментов статистика не меняется. И вот в версии 11.70xC1 сделали статистику на уровне фрагментов. Для использования этой возможности надо при создании таблицы указать опцию STATLEVEL FRAGMENT. Непонятно только как делать обновление статистики по такой таблице, поскольку в UPDATE STATISTICS я не нашел как указывать что статистику надо обновлять на фрагмент. Возможно это делается автоматически, т.е. определяется процент измененных данных во фрагменте и после этого обновляется статистика по фрагментам где было много измененных данных.
Кстати сам процент изменений при которых статистика будет считаться устаревшей на таблице, можно определить при создании таблицы с помощью опции STATCHANGE (действует на уровне экземпляра и на уровне таблицы), и при запуске UPDATE STATISTICS AUTO статистика будет обновляться только для таблиц у которых она устарела. Это свойство относится не только к фрагментированным таблицам. Процент изменений по умолчанию равен 10, но его можно изменить при создании таблицы.

Комментариев нет: