Собрать статистику, необходимую после усечения и вставки? - PullRequest
0 голосов
/ 20 июня 2019

Мне нужно было обрезать и перезагрузить таблицу.

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

После выполнения этих двух операций (усечение и сбор статистики для пустой таблицы) запустил вставку ... но не вижу новой статистики в таблице all_tab_statistics для моей таблицы. Sample_size по-прежнему равен 0.

Почему это? Разве Oracle не должен выполнять автоматический сбор статистики после вставки?

Нужно ли повторно запускать статистику или это просто замечательно, учитывая производительность за этим столом (обратите внимание, что она будет урезаться и перезагружаться каждый раз)?

1 Ответ

0 голосов
/ 14 июля 2019

Рассмотрим следующий подход. Преимущество таблицы в том, что она всегда присутствует.

  1. Создайте новую пустую таблицу, например старую.
  2. Загрузить данные в новую таблицу. Это самый медленный шаг.
  3. Сделайте все, что вам может понадобиться, например, обновите статистику.
  4. RENAME таблиц для замены новой таблицы на месте. Этот шаг достаточно быстрый, поэтому вы не заметите.
...