Мониторинг и оптимизация производительности СУБД Oracle 12c Доверяйте профессионалам Почему именно в Oracle? Универсальная СУБД с минимумом ограничений. Для подавляющего большинства Заказчиков – естественный выбор для хранения и обработки оперативной и исторической информации (зачастую в одной базе данных). Неограниченные возможности для разработчиков. Возможности полного мониторинга и оптимизации работы баз данных. Основные проблемы производительности Исходные проблемы, порождающие избыточную нагрузку и замедления: Неоптимальное выполнение запросов. Устаревшая или плохо проработанная архитектура структур данных приложения. Несоответствие настроек БД выполняемым задачам. Несоответствие настроек ОС. Нехватка или неправильная конфигурация аппаратных ресурсов. Oracle 12c – обновленный оптимизатор Адаптивное управление планами запросов Проблема: Если Oracle выбирает неоптимальный план доступа, на этапе выполнения запроса видно, где имеют место ошибки, но запрос продолжает «тормозить». Решение: Oracle 12c предлагает технологию Adaptive Query Optimization, которая корректирует план выполнения «на лету», существенно ускоряя запрос даже если изначальный план был неэффективен. Oracle 12c – обновленный оптимизатор Адаптивное управление планами запросов Почти всегда причина ошибок оптимизатора Oracle – недооценка количества обрабатываемых записей. Estimated Rows ≠ Actual Rows Oracle 12c – обновленный оптимизатор Адаптивное управление планами запросов Адаптивная оптимизация запросов Адаптивные планы доступа Методы соединения Параллельное распределение Адаптивная статистика На этапе разбора На этапе выполнения Oracle 12c – обновленный оптимизатор Адаптивное управление планами запросов • • • • Адаптивные планы доступа – любые динамические изменения планов Автоматическая ре-оптимизация – следующее выполнение Обратная связь по статистике = Обратная связь по кардинальности Динамическая статистика = Динамическая статистическая выборка Oracle 12c – обновленный оптимизатор Адаптивное управление планами запросов Методы соединения Альтернативные планы собраны предварительно. Под-планы сохраняются в курсоре. Коллектор статистики внедряется перед соединением. Строки буфферизуются до тех пор, пока не будет сделан окончательный выбор. Oracle 12c – обновленный оптимизатор Адаптивное управление планами запросов Методы соединения Количество строк в коллекторе превышает пороговое значение. План переключается на хэш-соединение. Коллектор статистики отключается. Итоговый план сохраняется для последующих выполнений. Oracle 12c – обновленный оптимизатор Адаптивное управление планами запросов Поиск измененных планов Oracle 12c – обновленный оптимизатор Адаптивное управление планами запросов Отображение адаптивных планов Oracle 12c – обновленный оптимизатор Адаптивное управление планами запросов Отображение адаптивных планов Oracle 12c – обновленный оптимизатор Адаптивная статистика Динамическая статистика (dynamic statistics) В Oracle 10g и 11g называлась dynamic sampling. В Oracle 12c дополнена возможностями: • Расчет кардинальности для соединений (joins) и операций group by. • У параметра OPTIMIZER_DYNAMIC_SAMPLING появился уровень 11, дающий оптимизатору самому принимать решение о сборе динамической статистики, даже в случае наличия базовой. • Динамическая статистика хранится в памяти и может быть использована другими запросами. Oracle 12c – обновленный оптимизатор Адаптивная статистика Обратная связь по статистике Появилась в Oracle 11g как cardinality feedback и имела характеристики: • Собиралась информация по объемам и по типам данных в период выполнения запроса. • Если статистика выполнения сильно отличалась от предполагаемой, при следующем вызове запроса происходил полный парсинг на основе собранных данных. • Запросы отслеживались один раз, если не было замечено значительной разницы с базовой статистикой, обратная связь больше не активировалась. • Регистрировалась кардинальность только для отдельных таблиц и операций group by, но не для соединений. • Собранная статистика хранилась только в курсоре и удалялась по мере его устаревания. Oracle 12c – обновленный оптимизатор Адаптивная статистика Обратная связь по статистике В Oracle 12с получила нововведения: • Добавлен сбор статистики по соединениям в запросах. • Интегрирована с адаптивными разделяемыми запросами со связанными переменными. • Добавлено новое поле IS_REOPTIMIZABLE в представлении V$SQL. • Статистические данные, собранные во время выполнения запросов хранятся уже на постоянной основе в виде директив SQL- планов. Oracle 12c – улучшенная статистика Top-frequency гистограммы Проблема: В случае, если в поле таблицы более 254 уникальных значений, Oracle (версии до 12с) создаст сбалансированную гистограмму на это поле. Но если, к примеру, 99% строк имеют менее 254 уникальных значений, такая гистограмма может некорректно отобразить распределение данных. Решение: Top-frequency гистограммы – это частотные гистограммы, построенные для наиболее частых значений, при том, что «редкие» значения игнорируются. При таком подходе оптимизатор Oracle получает наиболее качественную картину распределения данных. Oracle 12c строит такие гистограммы, если паратметр ESTIMATE_PERCENT выставлен в значение AUTO_SAMPLE_SIZE . Oracle 12c – улучшенная статистика Top-frequency гистограммы Пример: Таблица PRODUCT_SALES (содержит данные о продаже новогодних сувениров) имеет 1.78 млн. строк, и в поле TIME_ID 632 уникальных значения. Но подавляющее большинство строк имеет менее 254 уникальных значений, т.к. большая часть продаж приходится на декабрь. Oracle 12c – улучшенная статистика Гибридные гистограммы Проблема: Сбалансированные гистограммы часто дают неверное представление о распределении данных, т.к. группы (buckets) гистограммы имеют фиксированное количество значений. Решение: В гибридных гистограммах, как и в сбалансированных, записи объединяются в группы, однако размер групп может варьироваться, а минимальное количество записей в группе, как и в прежних версиях составляет (Кол-во строк)/254 . Таким образом, мы получаем гибрид сбалансированной и частотной диаграмм, которая отражает распределение значений с высокой точностью. Для отображения размера группы в представлениях *_tab_histograms добавлено поле endpoint_repeat_count. Oracle 12c – улучшенная статистика Гибридные гистограммы Пример: В Oracle 11g cо сбалансированной гистограммой поля cust_city_id: Значение 52114 признано «непопулярным», т.к. существует только в одной группе. Oracle 12c – улучшенная статистика Гибридные гистограммы Пример: План выполнения запроса к исходной таблице: В Oracle 12c, гибридная гистограмма: Корректное отображение количества значений: Oracle 12c – Средства мониторинга Мониторинг операций БД в режиме реального времени В Oracle 11g было представлено средство мониторинга запросов в реальном времени – Real-Time SQL Monitoring, позволившее в разы сократить время на оптимизацию запросов. В Oracle 12c к нему добавился Real-Time Database Operations Monitoring – средство, предоставляющее полную информацию об SQL и PL/SQL операциях, ассоциированных с бизнес-процессом. Эти операции могут быть заданы явно (указывается начальная и конечная точки операции), или неявно (с использованием тегов). Oracle 12c – Средства мониторинга Мониторинг операций БД в режиме реального времени Основной недостаток Real-Time SQL мониторинг в 11g – невозможность получить исторические данные, т.к. сеансы мониторинга «вымывались» из оперативной памяти. Oracle 12c предоставляет возможность сохранять данные средств мониторинга в репозитории AWR, что позволяет: • Получить подробные данные о запросе или сессии, даже спустя время. • Выявить причины изменения производительности. Корректное отображение количества значений: Oracle 12c – более 500 нововведений Вопросы и ответы Спасибо за внимание! Республика Казахстан, г. Алматы, ул. Байзакова, 250 Тел.: +7 (727) 394-44-77 Тел.: +7 (727) 394-44-78 Тел.: +7 (727) 394-44-79 Факс.: +7 (727) 394-43-07 E-mail: info@eltal-borlas.com