Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Как помочь оптимизатору?  [new]
Груня
Member

Откуда:
Сообщений: 227
Всем доброе время суток!

Oracle 10.2.0.3.

Есть несколько таблиц, живущих в след.режиме:
утром заполняются данными, посредством Insert (проводки, объемом несколько Мегабайт), вечером данные проводок переносятся в основные таблицы, сами таблицы очищаются полностью и частично (Truncate и Delete).
Статистика для оптимизатора собирается ночью после очистки,
командой execute DBMS_STATS.GATHER_SCHEMA_STATS('GC',DBMS_STATS.AUTO_SAMPLE_SIZE); .
И так происходит ежедневно.

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

Сейчас у нас после вечерней очистки и ночного сбора статистики, индексы всех таблиц сначала анализируются: analyze index ... validate structure, а затем Rebuild-ся те из них, 20% и более данных которых были удалены. В том числе и индексы упомянутой группы таблиц.

Вопрос к специалистам, имеющим опыт настройки приложений:

Стоит ли постоянно перестраивать "разрыхлевшие" после чистки таблиц индексы и при этом обновлять статистику?
Может быть вместо этого просто удалять ночную статистику:
analyze index ... delete statistics как уже не актуальную, не затрагивая индексы?

Или может быть эти таблицы вообще пересоздать как временные?
20 май 08, 11:56    [5687550]     Ответить | Цитировать Сообщить модератору
 Re: Как помочь оптимизатору?  [new]
Andrey.L
Member

Откуда: Харьков
Сообщений: 1546
попробуй не delete, а create as select ... drop
20 май 08, 12:00    [5687590]     Ответить | Цитировать Сообщить модератору
 Re: Как помочь оптимизатору?  [new]
Timm
Member

Откуда: Moscow, Ё-burg
Сообщений: 3696
Груня
По-моему очевидно, что после очистки таблицы становятся: одни пустыми, другие "слабозаполненными", а их индексы "рыхлыми" и, собираемая по ним статистика скорее мешает, нежели помогает работать оптимизатору, вводя его в заблуждение.

Мне не очевидно. Пример в студию!
Груня
Сейчас у нас после вечерней очистки и ночного сбора статистики, индексы всех таблиц сначала анализируются: analyze index ... validate structure, а затем Rebuild-ся те из них, 20% и более данных которых были удалены. В том числе и индексы упомянутой группы таблиц.

зачем?
20 май 08, 12:04    [5687629]     Ответить | Цитировать Сообщить модератору
 Re: Как помочь оптимизатору?  [new]
G.M.
Member

Откуда:
Сообщений: 342
Груня

Стоит ли постоянно перестраивать "разрыхлевшие" после чистки таблиц индексы и при этом обновлять статистику?
Может быть вместо этого просто удалять ночную статистику:
analyze index ... delete statistics как уже не актуальную, не затрагивая индексы?

Или может быть эти таблицы вообще пересоздать как временные?

Индексы перестраивать не надо.
Статистику по этим таблицам надо собирать утром, после заполнения данными.
Временные таблицы сюда не подойдут - данные в них не видны другим сессиям.
20 май 08, 12:22    [5687807]     Ответить | Цитировать Сообщить модератору
 Re: Как помочь оптимизатору?  [new]
Сэмка
Member

Откуда:
Сообщений: 372
Вообще-то я бы собрал статистику 1 раз в конце дня (до чистки). Проделывать это периодически, поскольку объем обычно все-таки растет. При таком варианте утром будет работать криво, но быстро, потому как данных мало, а вечером - "оптимально". Я так понимаю, это OLTP и важен быстрый отклик, а не агрегат.
20 май 08, 12:24    [5687843]     Ответить | Цитировать Сообщить модератору
 Re: Как помочь оптимизатору?  [new]
Груня
Member

Откуда:
Сообщений: 227
Сэмка
Вообще-то я бы собрал статистику 1 раз в конце дня (до чистки). Проделывать это периодически, поскольку объем обычно все-таки растет. При таком варианте утром будет работать криво, но быстро, потому как данных мало, а вечером - "оптимально". Я так понимаю, это OLTP и важен быстрый отклик, а не агрегат.
Спасибо, ход мысли ясен :)
20 май 08, 13:37    [5688461]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить