Оптимизация скорости работы Кошкин Алексей Антонович, Руководитель проектов «Центра Информационных Технологий и Консалтинга Парус» koshkin@parus.ru Тема 10. Оптимизация скорости работы Оптимизация действия по • уменьшению потребления ресурсов сервера БД • уменьшению времени отклика пользовательской операции 2 Тема 10. Оптимизация скорости работы Оптимизация Оптимизация экземпляра Оптимизация SQL запросов (Instance tuning) (SQL tuning) • Изменение параметров БД • Изменение планов выполнения • Изменение физ. конфигурации • Изменение SQL запросов сервера • Изменение логики обработки 3 Тема 10. Оптимизация скорости работы Планирование Первоначальная конфигурация системы 1. подбор конфигурации сервера 2. настройка параметров ОС (*nix) 3. настройка параметров экземпляра 4. тестирование под нагрузкой 4 Тема 10. Оптимизация скорости работы Планирование 1. Подбор конфигурации сервера • количество пользователей (одновременно работающих • с системой) объем информации хранимой в БД, набор модулей Парус Пример: размер БД для модулей Бухучет и ЗСР ~ 300Gb за 5 лет работы (без учета undo и temp) • • количество БД, размещаемых на сервере вариант резервного копирования Дисковая подсистема ! Процессоры Память +% роста 5 Тема 10. Оптимизация скорости работы Планирование 2. Конфигурация дисковой подсистемы Типы файлов БД Файлы данных Data files *.dbf, *.dat Управляющие файлы Control files *.ctl, *.ora Файлы журналов повтора Redo log files *.rdo, *.ora Файлы трассировки и журналов оповещений Trace log, alert log, information log Файлы параметров Parameter file *.ora Файл паролей Password file *.pwd 6 Тема 10. Оптимизация скорости работы Планирование 3. Настройка параметров экземпляра > 10g Общий объем памяти экземпляра = PGA + SGA PGA_AGGRIGATE_TARGET SGA_TARGET SGA_MAX_SIZE DB_CACHE_SIZE SHARED_POOL_SIZE JAVA_POOL_SIZE REDO_LOG_BUFFER 7 Тема 10. Оптимизация скорости работы Планирование 4. Сервис нагрузочного тестирования • • • • Отдельный сервис в лицензии Моделирование одновременного и многократно повторяемых процессов Каждый процесс – последовательность действий в Системе Используются клиентские процедуры 8 Тема 10. Оптимизация скорости работы Оптимизация Оптимизация экземпляра Оптимизация SQL запросов (Instance tuning) (SQL tuning) только при планировании • Добавление нового экземпляра на сервер • Добавление схемы для другого приложения в БД • Ввод процедур, требовательных к ресурсам (закачка/выгрузка данных, jobs, сбор статистики…) для решения любых оперативных проблем производительности • Запуск отчета/процедуры • Отбор в разделе • Импорт/экспорт •… 9 Тема 10. Оптимизация скорости работы Для оперативной оптимизации × Оптимизация экземпляра Начиная от оптимизации экземпляра не всегда можно выйти на нужные пользовательские операции = Мониторинг экземпляра может помочь предупредить проблемы, увидеть симптомы проблем, дать сигнал к началу работ по оптимизации Оптимизация SQL запросов = Оптимизация пользовательских операций Начиная от пользовательской операции можно выйти на проблемы экземпляра, связанные с настройкой параметров или изменением конфигурации сервера 10 Тема 10. Оптимизация скорости работы Оптимизация SQL запросов Что? Где? Когда? КОГДА? (нужно ли) • Вывод годового отчета длится 30мин • Открытие раздела длится 10 секунд • Запуск JOBа приводит к загрузке дисков на 90% = ? 11 Тема 10. Оптимизация скорости работы Оптимизация SQL запросов ГДЕ? Что? Где? Когда? (проводить оптимизацию) • Клиентское приложение • Сеть • Сервер БД 12 Тема 10. Оптимизация скорости работы Оптимизация SQL запросов ЧТО? Что? Где? Когда? (меняется в результате оптимизации) • Изменение SQL запроса • Изменение параметров экземпляра • Изменение конфигурации сервера 13 Тема 10. Оптимизация скорости работы Оптимизация SQL запросов Что нужно знать 1. 2. 3. 4. Стадии выполнения запроса Что такое Oracle Optimizer (RBO и CBO) План (выполнения) запроса Статистика 14 Тема 10. Оптимизация скорости работы Оптимизация SQL запросов Начало оптимизации: Порядок действий Система – это набор пользовательских операций Время отклика пользовательской операции – это единственный показатель, представляющий интерес для бизнеса 15 Тема 10. Оптимизация скорости работы Оптимизация SQL запросов Начало оптимизации: Порядок действий 1. Определение наиболее значимых пользовательских операции для бизнеса 2. Точное определение границ 3. Оценка времени отклика и профиль ресурсов: • • • • SQL trace и tkprof Profiler Explain plan DBMS_MONITOR 4. Выбор наиболее медленных компонент из профиля 16 Тема 10. Оптимизация скорости работы Оптимизация SQL запросов Профиль ресурсов Component --------------------------CPU service db file sequential read SQL*Net message from client latch free other --------------------------Total Duration ---------------48,946.7s 98.0% 940.1s 2.0% 60.9s 0.0% 2.2s 0.0% 1.4s 0.0% ---------------49,951.3s 100.0% # Calls ------192,072 507,385 191,609 171 Dur/Call ---------0.254835s 0.001853s 0.000318s 0.012690s ------- ---------- Общее время отклика операции 17 Тема 10. Оптимизация скорости работы Оптимизация SQL запросов SQL trace SQL trace ORACLE_HOME/rdbms/admin/tracetab.sql файл .trc tkprof Профиль ресурсов 18 Тема 10. Оптимизация скорости работы Оптимизация SQL запросов SQL trace a) alter session set tracefile_identifier=<xxx>; alter session set events '10046 trace name context forever, level 12'; /* code to be traced goes here */ alter session set events '10046 trace name context off'; b) sys.dbms_system.set_sql_trace_in_session( sid=>xxx, serial#=>yyy, sql_trace=>TRUE ); /* code to be traced goes here */ sys.dbms_system.set_sql_trace_in_session( sid=>xxx, serial#=>yyy, sql_trace=>FALSE ); 19 Тема 10. Оптимизация скорости работы Оптимизация SQL запросов SQL trace tkprof <файл.trc> <выходной файл профиля> explain=<username>/<pwd> user_dump_dest 20 Тема 10. Оптимизация скорости работы Оптимизация SQL запросов Средства отладки запросов Профиль ресурсов Component --------------------------CPU service db file sequential read SQL*Net message from client latch free other --------------------------Total Duration ---------------48,946.7s 98.0% 940.1s 2.0% 60.9s 0.0% 2.2s 0.0% 1.4s 0.0% ---------------49,951.3s 100.0% # Calls ------192,072 507,385 191,609 171 Dur/Call ---------0.254835s 0.001853s 0.000318s 0.012690s ------- ---------- Доступны: общий профиль и профиль шагов 21 Тема 10. Оптимизация скорости работы Оптимизация SQL запросов Profiler ORACLE_HOME/rdbms/admin/profload.sql DBMS_PROFILER 22 Тема 10. Оптимизация скорости работы Мониторинг Oracle Enterprise Manager > 10g • просматривать состояние экземпляра • выполнять действия по оптимизации • задавать пороговые значения и автоматическое оповещение • ведет историю 23 Тема 10. Оптимизация скорости работы Факторы, влияющие на производительность • • • • Версия ПП Парус и Oracle Сбор статистики Наличие других приложений на сервере БД Тип Операционной системы для Парус • • • Массовая регистрация событий Наличие собственных индексов Объем данных в разделе 24 Тема 10. Оптимизация скорости работы Обновление на новую версию Парус • • Оптимизация SQL запросов и логики работы Переход на новую версию Oracle • • • дефрагментация данных Систематизация собственных наработок Новые возможности Системы 25