Соберите статистику для огромной таблицы оракула — опасайтесь краха сервера

Я пытаюсь улучшить время выполнения представления базы данных Oracle, которая загружается целую вечность и включает в себя таблицу с 15 352 595 записями. Я собираюсь собрать статистику по нему, потому что подозреваю, что низкая производительность связана с устаревшей статистикой.

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

Это реальная вещь, о которой стоит беспокоиться?


person im_chc    schedule 01.04.2014    source источник
comment
15 миллионов строк не очень много. Если вы беспокоитесь о том, что это повлияет на производительность ваших конечных пользователей, почему бы не запустить его ночью или в выходные дни? Но я предполагаю, что у вас есть большие проблемы - если ваш сервер настолько уязвим, как вы предполагаете, вы должны в первую очередь убедиться, что у вас есть работающая стратегия резервного копирования, прежде чем начинать оптимизировать производительность.   -  person Frank Schmitt    schedule 01.04.2014
comment
@FrankSchmitt Я думаю, что ваш комментарий - правильный ответ на этот вопрос.   -  person ninesided    schedule 01.04.2014
comment
это жалко, но никто на моей стороне не имеет опыта для правильного резервного копирования Oracle   -  person im_chc    schedule 01.04.2014
comment
что я хочу, так это посмотреть, достаточно ли низок риск, чтобы сделать статистику, например, если 15 миллионов строк на самом деле слишком мало, чтобы на самом деле быть риском выхода из строя жестких дисков, или если статистика на самом деле достаточно безопасна и нет. нужно беспокоиться об этом, тогда я могу идти вперед   -  person im_chc    schedule 01.04.2014
comment
Обычно я просто шел вперед и вычислял статистику. Но если вы хотите быть уверенным, я предлагаю вам создать меньшую тестовую таблицу (скажем, 10% от вашей реальной таблицы) и вычислить статистику с помощью dbms_stats.gather_table_stats(, ... degree => 1);. Это гарантирует, что Oracle не использует параллельные запросы для анализа. Если ваша база данных может справиться с этим, я бы пошел дальше и собрал статистику для вашей производственной таблицы.   -  person Frank Schmitt    schedule 01.04.2014


Ответы (1)


Вы можете собирать статистику с низким значением расчетного процента.

person yugesh    schedule 02.04.2014