1 ОГЛАВЛЕНИЕ ВВЕДЕНИЕ .................................................................................... ERROR! BOOKMARK NOT DEFINED. ПОСТАНОВКА ЗАДАЧИ ДИПЛОМНОЙ РАБОТЫ ........... ERROR! BOOKMARK NOT DEFINED. ГЛАВА 1. ПРОБЛЕМА ПРОИЗВОДИТЕЛЬНОСТИ БОЛЬШИХ БАЗ ДАННЫХ .......... ERROR! BOOKMARK NOT DEFINED. 1.1 ОСОБЕННОСТИ БОЛЬШИХ БАЗ ДАННЫХ ....................................... ERROR! BOOKMARK NOT DEFINED. 1.2 СИСТЕМА УПРАВЛЕНИЯ БАЗАМИ ДАННЫХ ORACLE ................... ERROR! BOOKMARK NOT DEFINED. 1.3 ЧТО ВЛИЯЕТ НА ПРОИЗВОДИТЕЛЬНОСТЬ ..................................... ERROR! BOOKMARK NOT DEFINED. 1.4 НЕОБХОДИМОСТЬ, ЦЕЛИ И ПРИНЦИПЫ НАСТРОЙКИ ПРОИЗВОДИТЕЛЬНОСТИ ................... ERROR! BOOKMARK NOT DEFINED. 1.5 ОПТИМИЗАТОР ORACLE.................................................................. ERROR! BOOKMARK NOT DEFINED. 1.5.1 РАНЖИРОВАНИЕ МЕТОДОВ ДОСТУПА ......................................... ERROR! BOOKMARK NOT DEFINED. 1.5.2 АНАЛИЗ ЗАПРОСОВ С ЦЕЛЬЮ ПОВЫШЕНИЯ СКОРОСТИ ИХ ВЫПОЛНЕНИЯ .ERROR! BOOKMARK NOT DEFINED. 1.5.3 ЗАДАНИЕ РЕЖИМА ОПТИМИЗАЦИИ ............................................. ERROR! BOOKMARK NOT DEFINED. 1.5.4 EXPLAIN PLAN....................................................................................................................................... 4 1.6 НАБОР УТИЛИТ СБОРА СТАТИСТИКИ STATSPACK ................... ERROR! BOOKMARK NOT DEFINED. 1.6.1 СОСТАВ STATSPACK ................................................................ ERROR! BOOKMARK NOT DEFINED. 1.6.2 РАБОТА СО STATSPACK............................................................ ERROR! BOOKMARK NOT DEFINED. 1.6.3 ПАРАМЕТРЫ СТАТИСТИКИ .......................................................... ERROR! BOOKMARK NOT DEFINED. ГЛАВА 2. МЕТОДИКА ПОВЫШЕНИЯ ПРОИЗВОДИТЕЛЬНОСТИ .......ERROR! BOOKMARK NOT DEFINED. 2.1 ЛОКАЛИЗАЦИЯ ПРОБЛЕМ ПРОИЗВОДИТЕЛЬНОСТИ..................... ERROR! BOOKMARK NOT DEFINED. 2.1.1 РЕГИСТРАЦИЯ ОБРАЩЕНИЙ ПОЛЬЗОВАТЕЛЕЙ ............................ ERROR! BOOKMARK NOT DEFINED. 2.1.2 МОНИТОРИНГ ВЫПОЛНЕНИЯ ЗАПРОСОВ .................................... ERROR! BOOKMARK NOT DEFINED. 2.2 АНАЛИЗ ПРОБЛЕМ ПРОИЗВОДИТЕЛЬНОСТИ ................................. ERROR! BOOKMARK NOT DEFINED. 2.2.1 ИСПОЛЬЗОВАНИЕ ТЕСТОВ ПРОИЗВОДИТЕЛЬНОСТИ ................... ERROR! BOOKMARK NOT DEFINED. 2.2.2 НАЛИЧИЕ И АКТУАЛЬНОСТЬ СТАТИСТИКИ ................................. ERROR! BOOKMARK NOT DEFINED. 2.2.3 АНАЛИЗ ЗАПРОСОВ С ПРОМЕЖУТОЧНЫМИ ТАБЛИЦАМИ ........... ERROR! BOOKMARK NOT DEFINED. 2.2.4 АНАЛИЗ ПЛАНА ВЫПОЛНЕНИЯ ЗАПРОСА.................................... ERROR! BOOKMARK NOT DEFINED. 2.3 2.3.1 СОЗДАНИЕ ЭФФЕКТИВНЫХ ИНДЕКСОВ ......................................... ERROR! BOOKMARK NOT DEFINED. ОПРЕДЕЛЕНИЕ СЕЛЕКТИВНОСТИ ................................................ ERROR! BOOKMARK NOT DEFINED. 2 2.3.2 ОБЗОР ИНДЕКСОВ ORACLE .......................................................... ERROR! BOOKMARK NOT DEFINED. 2.3.3 ОСНОВНЫЕ ПРАВИЛА ПОСТРОЕНИЯ ИНДЕКСОВ ......................... ERROR! BOOKMARK NOT DEFINED. 2.3.4 ОПРЕДЕЛЕНИЕ ЭФФЕКТИВНОСТИ ИСПОЛЬЗОВАНИЯ ИНДЕКСОВ ERROR! BOOKMARK NOT DEFINED. 2.3.5 АНАЛИЗ ВОЗМОЖНЫХ ПРИЧИН ОТСУТСТВИЯ ИНДЕКСНОГО ДОСТУПА ......ERROR! BOOKMARK NOT DEFINED. 2.3.6 ВЛИЯНИЕ ИНДЕКСОВ НА ПРОИЗВОДИТЕЛЬНОСТЬ ПРИ ОПЕРАЦИЯХ ИЗМЕНЕНИЯ БАЗЫ ......... ERROR! BOOKMARK NOT DEFINED. 2.3.7 ОПТИМИЗАЦИЯ ГРУППЫ ИНДЕКСОВ ........................................... ERROR! BOOKMARK NOT DEFINED. 2.4 ОПТИМИЗАЦИЯ ПАРАМЕТРОВ ОБЪЕКТОВ..................................... ERROR! BOOKMARK NOT DEFINED. 2.5 ОПТИМИЗАЦИЯ ПАРАМЕТРОВ СЕРВЕРА ORACLE......................... ERROR! BOOKMARK NOT DEFINED. ГЛАВА 3. УСТРАНЕНИЕ ПРОБЛЕМ ПРОИЗВОДИТЕЛЬНОСТИ ОСНОВНЫХ ИНФОРМАЦИОННЫХ СИСТЕМ ОАО «ТАТНЕФТЬ» ..... ERROR! BOOKMARK NOT DEFINED. 3.1 ОПИСАНИЕ КОМПЛЕКСА OILSERVER............................................ ERROR! BOOKMARK NOT DEFINED. 3.2 ОПИСАНИЕ СИСТЕМЫ ЭНЕРГОСЕРВЕР ......................................... ERROR! BOOKMARK NOT DEFINED. 3.3 АНАЛИЗ РАБОТЫ OILSERVER И ЭНЕРГОСЕРВЕР .......................... ERROR! BOOKMARK NOT DEFINED. 3.3.1 СБОР СТАТИСТИКИ ...................................................................... ERROR! BOOKMARK NOT DEFINED. 3.3.2 ВЫЯВЛЕНИЕ ВРЕМЕННОЙ ЗАГРУЗКИ ПРОЦЕССОРА ПО РЕЗУЛЬТАТАМ РАБОТЫ ПАКЕТА STATSPACK ........................................................................................... ERROR! BOOKMARK NOT DEFINED. 3.3.3 ПРИМЕР РАЗБОРА SQL-ЗАПРОСА С ПОМОЩЬЮ EXPLAIN PLAN . ERROR! BOOKMARK NOT DEFINED. 3.3.4 ВЫЯВЛЕНИЕ НЕСЕЛЕКТИВНЫХ ИНДЕКСОВ................................. ERROR! BOOKMARK NOT DEFINED. 3.4 ПРЕДПРИНЯТЫЕ ДЕЙСТВИЯ И ДОСТИГНУТЫЙ РЕЗУЛЬТАТ ........ ERROR! BOOKMARK NOT DEFINED. 3.4.1 НАСТРОЙКА ПАРАМЕТРА ПАМЯТИ.............................................. ERROR! BOOKMARK NOT DEFINED. 3.4.2 МИНИМИЗАЦИЯ ЧИСЛА ЖЕСТКИХ РАЗБОРОВ ............................. ERROR! BOOKMARK NOT DEFINED. 3.4.3 ИЗМЕНЕНИЕ И ДОБАВЛЕНИЕ ИНДЕКСОВ ..................................... ERROR! BOOKMARK NOT DEFINED. 3.4.4 ВЫЯВЛЕНИЕ ЗАПРОСОВ С ЖЕСТКИМ РАЗБОРОМ......................... ERROR! BOOKMARK NOT DEFINED. 3.4.5 ИСПОЛЬЗОВАНИЕ КЛЮЧЕВЫХ ПОДСКАЗОК ................................ ERROR! BOOKMARK NOT DEFINED. 3.4.6 УСТРАНЕНИЕ НЕЛЕГИТИМНЫХ ЗАПРОСОВ ................................. ERROR! BOOKMARK NOT DEFINED. ЗАКЛЮЧЕНИЕ ............................................................................ ERROR! BOOKMARK NOT DEFINED. СПИСОК ЛИТЕРАТУРЫ .......................................................... ERROR! BOOKMARK NOT DEFINED. ПРИЛОЖЕНИЕ А. КОЭФФИЦИЕНТЫ ПРОИЗВОДИТЕЛЬНОСТИ ......ERROR! BOOKMARK NOT DEFINED. ПРИЛОЖЕНИЕ Б. РЕЗУЛЬТАТЫ ВЫЯВЛЕНИЯ ПОВРЕМЕННОЙ ЗАГРУЗКИ ПРОЦЕССОРА ERROR! BOOKMARK NOT DEFINED. 3 ПРИЛОЖЕНИЕ В. РЕЗУЛЬТАТЫ ВЫЯВЛЕНИЯ СЕЛЕКТИВНОСТИ ИНДЕКСОВ В СИСТЕМЕ ЭНЕРГОСЕРВЕР .................................................... ERROR! BOOKMARK NOT DEFINED. ПРИЛОЖЕНИЕ Г. РЕЗУЛЬТАТЫ ВЫЯВЛЕНИЯ СЕЛЕКТИВНОСТИ ИНДЕКСОВ В OILSERVER ERROR! BOOKMARK NOT DEFINED. ТЕКСТ ВЫСТУПЛЕНИЯ Эффективность работы и конкурентоспособность любой компании зависит от функционирования её ИС, центральным компонентом которой является сервер БД. Корпорация Oracle более 10 лет является лидером в области построения промышленных БД. Задача изучения и освоения методов оптимизации серверов Oracle является актуальной для практической работы таких компаний, как ОАО «Татнефть», в производственном процессе которых используются значительные объемы данных. С ростом объемов хранимой информации возникают проблемы производительности системы. Диаграмма (СЛАЙД_1) иллюстрирует сравнительную эффективность уровней оптимизации. Производить настройку необходимо по уровням сверху вниз, так как самые важные решения реализуются с наименьшими усилиями на верхнем уровне, и каждый уровень влияет на нижние уровни. Задача же моей дипломной работы - это определение возможных действий, необходимых при решении типовых проблем производительности серверов Oracle, не изменяющих бизнес-логику и структуру SQL-запроса, так как для эксплуатирующихся систем это, как правило, невозможно. На схеме (СЛАЙД_2) показаны этапы оптимизации производительности серверов: 1 этап. Локализация проблем производительности. 2 этап. Анализ проблемных запросов. 3 этап. Разработка и реализация мер по устранению проблем произв-ти. В состав Oracle входит инструментарий для повышения производительности (СЛАЙД_2). Оптимизатор Oracle предназначен для поиска наиболее эффективного способа доступа SQL-кода к данным и 4 формирования плана выполнения запроса. Основной режим работы оптимизатора основан на учете стоимости запросов, т.е. на анализе затрат. Для вычисления стоимости запросов применяется хранимая внутренняя статистика. Для управления оптимизатором используются специализированные указания (hint), которые размещаются непосредственно в строках кода SQLвыражения. Ещё одно средство Oracle - набор утилит сбора статистики StatsPack. Собранная им статистика о производительности хранится в специальных таблицах, которые являются основным инструментом для мониторинга производительности Oracle и служат отправной точкой для действий по настройке или переконфигурации системы. Пакет STATSPACK используется как механизм выявления ресурсоемких SQL–запросов с большим временем использования процессора или с большой частотой исполнения. Результатом локализации проблем должен быть список SQL-запросов, производительность которых необходимо улучшить. Для анализа плана выполнения выявленных проблемных запросов существует инструмент Explain Plan. Он отражает поведение оптимизатора. Т.е. выдает план выполнения SQL-выражения без собственно выполнения. В частности, выводит информацию об использующихся индексах. Наибольшее влияние на скорость выполнения запроса оказывают ИНДЕКСЫ таблиц, участвующих в запросе. Правильно подобранные индексы могут улучшить время выполнения запроса в тысячи раз и кардинально снизить потребление других системных ресурсов, в связи с чем нецелесообразно изменять настройку параметров Oracle до исчерпания возможностей оптимизации запроса настройкой плана его выполнения. Практическая часть работы выполнялась на основных информационных системах «Татнефть». OilServer - информационно-аналитический комплекс управления нефтедобывающим производством. Это самая большая БД «Татнефти». В её состав входит более 450 таблиц. Объем хранящейся в ней 5 информации занимает около 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 раз. Помимо этого на системах Татнефти были оптимизированы настройки параметров памяти, выявлены неселективные запросы и жесткие разборы и минимизировано их количество. Но все же наибольшую результативность в повышении производительности показала работа с индексами. 6 Значительной пользой является то, что разработанная методика может быть успешно применена для оптимизации любых информационных систем на базе ORACLE.