birmaga.ru
добавить свой файл

1




Оглавление


Текст выступления


Эффективность работы и конкурентоспособность любой компании зависит от функционирования её ИС, центральным компонентом которой является сервер БД. Корпорация Oracle более 10 лет является лидером в области построения промышленных БД. Задача изучения и освоения методов оптимизации серверов Oracle является актуальной для практической работы таких компаний, как ОАО «Татнефть», в производственном процессе которых используются значительные объемы данных. С ростом объемов хранимой информации возникают проблемы производительности системы.

Диаграмма (СЛАЙД_1) иллюстрирует сравнительную эффективность уровней оптимизации. Производить настройку необходимо по уровням сверху вниз, так как самые важные решения реализуются с наименьшими усилиями на верхнем уровне, и каждый уровень влияет на нижние уровни.



Задача же моей дипломной работы - это определение возможных действий, необходимых при решении типовых проблем производительности серверов Oracle, не изменяющих бизнес-логику и структуру SQL-запроса, так как для эксплуатирующихся систем это, как правило, невозможно. На схеме (
СЛАЙД_2) показаны этапы оптимизации производительности серверов:

1 этап. Локализация проблем производительности.

2 этап. Анализ проблемных запросов.

3 этап. Разработка и реализация мер по устранению проблем произв-ти.

В состав Oracle входит инструментарий для повышения производительности (СЛАЙД_2
). Оптимизатор Oracle предназначен для поиска наиболее эффективного способа доступа SQL-кода к данным и формирования плана выполнения запроса. Основной режим работы оптимизатора основан на учете стоимости запросов, т.е. на анализе затрат. Для вычисления стоимости запросов применяется хранимая внутренняя статистика. Для управления оптимизатором используются специализированные указания (hint), которые размещаются непосредственно в строках кода SQL-выражения.

Ещё одно средство Oracle - набор утилит сбора статистики StatsPack. Собранная им статистика о производительности хранится в специальных таблицах, которые являются основным инструментом для мониторинга производительности Oracle и служат отправной точкой для действий по настройке или переконфигурации системы.

Пакет STATSPACK используется как механизм выявления ресурсоемких SQL–запросов с большим временем использования процессора или с большой частотой исполнения. Результатом локализации проблем должен быть список SQL-запросов, производительность которых необходимо улучшить.

Для анализа плана выполнения выявленных проблемных запросов существует инструмент Explain Plan. Он отражает поведение оптимизатора. Т.е. выдает план выполнения SQL-выражения без собственно выполнения. В частности, выводит информацию об использующихся индексах.

Наибольшее влияние на скорость выполнения запроса оказывают ИНДЕКСЫ таблиц, участвующих в запросе. Правильно подобранные индексы могут улучшить время выполнения запроса в тысячи раз и кардинально снизить потребление других системных ресурсов, в связи с чем нецелесообразно изменять настройку параметров Oracle до исчерпания возможностей оптимизации запроса настройкой плана его выполнения.

Практическая часть работы выполнялась на основных информационных системах «Татнефть». OilServer - информационно-аналитический комплекс управления нефтедобывающим производством. Это самая большая БД «Татнефти». В её состав входит более 450 таблиц. Объем хранящейся в ней информации занимает около 40Гб. Энергосерверэто прикладная система, предназначенная для информационного обеспечения процессов, связанных с энергоснабжением. В её состав входит более 150 таблиц. Объем хранящейся в ней информации занимает около 20Гб.

Рассмотрим процесс оптимизации на конкретном примере (СЛАЙД_3,4,5)



  1. Сначала был установлен пакет StatsPack

  2. Далее организован сбор статистики каждые 10 минут.

  3. В отчете StatsPack были выявлены наиболее ресурсоемкие запросы. Например, данный запрос запускался 1 раз и выполнялся 1,5 минуты.

  4. В отчете StatsPack запросы представлены без исходного форматирования и разбиты на строки определенной длины. Перед разбором в Explain Plan запрос необходимо отформатировать.

  5. Отформатированный запрос был разобран в Explain Plan. Его стоимость 58095.

  6. В предложение Where используется функция Substr, поэтому индекс по столбцам неэффективен. Я создала функциональный индекс.

  7. В результате произведенных действий стоимость запроса уменьшилась до 7. То есть выполнение запроса ускорилось в 8300 раз.

Всего была собрана информация об около 600 запросах, из них было отобрано 9 и оптимизировано 5. Наряду с разобранным примером был создан эффективный Bitmap-индекс к другой таблице - время выполнения проблемного запроса сократилось более чем в 40 раз. Результатом изменения ключевых подсказок стало ускорение выполнения запроса более чем в 13 раз. Помимо этого на системах Татнефти были оптимизированы настройки параметров памяти, выявлены неселективные запросы и жесткие разборы и минимизировано их количество. Но все же наибольшую результативность в повышении производительности показала работа с индексами.



Значительной пользой является то, что разработанная методика может быть успешно применена для оптимизации любых информационных систем на базе ORACLE.