Стоимость выполнения против времени выполнения в Oracle - PullRequest
0 голосов
/ 01 июля 2010

У меня есть запрос отчета, который объединяет 19 таблиц в DW. Я знаю, что наш дизайн схемы DW не очень хорош. Этот запрос выполняется каждую ночь и собирает вчерашнюю активность. Наша система заработала в 06/2008, поэтому объем данных за 1 день - это небольшая доля по сравнению со всем объемом данных.

Время выполнения запроса обычно составляло 5 ~ 10 минут, а стоимость выполнения - около 70000. И это использует индекс / вложенный цикл. Стоимость низкая. Все выглядит хорошо.

В этом месяце запрос становится все медленнее и медленнее, но стоимость выполнения остается неизменной. Он по-прежнему использует индекс, стоимость выполнения все еще низкая, но он работает более 1 часа.

Есть идеи ??

Ответы [ 3 ]

3 голосов
/ 01 июля 2010

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

2 голосов
/ 01 июля 2010

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

Если у вас есть доступ к коду и SQL * Plus, отправной точкой будет:

set autotrace on

, затем запустите запрос.

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

Другой вариант - взять Statspack с моментальным снимком вашей плохой работы.

Это должно как минимум сузить место, на которое тратится время (физический ввод-вывод, процессор и т. Д.).

Вполне возможно, что совокупное увеличение данных привело к тому, что ваш запрос превысил лимит ресурсов.

1 голос
/ 03 октября 2011

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

Мы уменьшили отметки приливов с помощью ALTER TABLE MOVE и вернулись к нормальной скорости.

С уважением, Викас

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...