Войти

Показать полную графическую версию : Оптимизация базы данных


veter48
24-10-2013, 17:37
Здравствуйте.

Скажите, пожалуйста, с чего начать оптимизацию базы данных/SQL запросов Oracle?
В общем, есть большая БД, из которой делаются отчёты. Так вот если делать отчёты за последние месяцы, то всё +/- в порядки, а вот если за последние годы, то очень долго всё генерируется. Как это всё проанализировать, может, есть какие-то инструменты? Может нужно пересмотреть индексы?

Буду благодарен вам за советы.

Delirium
26-10-2013, 07:59
Способов оптимизации очень много. Это и партиционирование таблиц, и перестройка индексов, и оптимизация самих запросов и так далее. Вы описываете слишком общую картину, чтобы дать конкретный ответ.
Для ясности:
размер базы? количество индексов, участвующих в запросах? Количество строк в таблицах? Пример SQL запроса?

У меня есть таблица, в которой порядка миллиарда записей, так в ней простой ORDER BY делается довольно долго.

veter48
28-10-2013, 18:05
Вот план выполнения одного запроса:

http://s10.postimg.org/d3a26a8fd/speed.png

Запрос возвращает 115559 записей за 102 секунды. Это эксперимент над тестовой БД, в настоящей записей гораздо больше и время тоже катастрофически большое.

veter48
03-11-2013, 23:18
Скажите, можете подсказать. Почему допустим, я выбираю данные за позапрошлую неделю то результат получаю в 10х быстрее, чем допустим за какую-то неделю в апреле?
Спасибо.




© OSzone.net 2001-2012