Oracle настройка производительности книги
Получение данных из памяти быстрее, чем получение с диска.
Для памяти есть два важных фактора, которые влияют на производительность: 1, объем доступной памяти 2 и то, как управлять, распределять и использовать эту память.
Память Oracle в основном состоит из 2 частей, SGA и PGA. Оба могут быть загружены при запуске Oracle или установлены при использовании базы данных.
Изменить SGA
SGA относится к глобальной области системы, то есть к глобальной области системы. Глобальная область системы представляет собой структуру разделяемой памяти. Сохраненная информация является общедоступной информацией базы данных, например, управляющей информацией базы данных. Независимо от того, сколько пользователей подключено к текущей базе данных, память, предоставленная SGA, будет распределена. Поэтому SGA также называется общей глобальной областью. SGA в основном состоит из следующих частей: общий пул, буфер, большой пул, пул Java и буфер журнала.
Просмотр состояния SGA текущей базы данных
sga_max_size - максимальная память, выделенная для SGA. По умолчанию значение sga_max_size равно 164M, а sga_target_size равно 0
Общий бассейн
Общий пул является наиболее очевидной частью SGA, которая влияет на производительность. Выполнение оператора SQL выглядит следующим образом:
Общий пул кэширует подготовленные операторы SQL (то есть планы выполнения). Идентификатор кэша - это хэш-значение, сформированное в соответствии с оператором SQL. (SQL-оператор, чье хеш-значение абсолютно уникально). Когда сервер получает инструкцию SQL, он получает значение хеш-функции в соответствии с алгоритмом хеширования, а затем ищет предварительно обработанный оператор SQL в общем пуле в соответствии со значением хеш-функции.Если существует, он непосредственно выполняет операции с базой данных, в противном случае он будет выполнять синтаксический анализ. Следовательно, для общего пула существует понятие частоты попаданий, то есть вероятность успеха плана выполнения получается непосредственно из общего пула. Чем выше вероятность успеха, тем выше производительность базы данных.
Область sql, требующая особого внимания, заключается в том, что ее gethitratio - это частота обращений к интерпретируемому плану непосредственно при синтаксическом анализе оператора sql; кроме того, pinhitratio - это частота попаданий при выполнении. Частота попаданий в это время может быть суммой количества попаданий во всех пространствах имен, деленной на общее количество выполнений.
Для общего пула, если частота обращений составляет менее 95%, например, для скорости обращения в области SQL, следует попытаться увеличить размер общего пула, чтобы повысить производительность.
Изменить SGA
Поскольку Oracle 10g может самостоятельно управлять памятью каждой части SGA, вы можете изменить размер памяти SGA, изменив параметры sga_max_size и sga_target.
Команда alter system используется для изменения системных атрибутов, scop = spfile отражает этот параметр в файле запуска базы данных. После перезапуска базы данных этот параметр вступит в силу немедленно.
Дело не в том, что чем больше объем памяти, выделенной SGA, тем лучше. Во-первых, память сервера базы данных ограничена, и память сервера должна быть выделена для других ресурсов, кроме того, SGA выделяет слишком много памяти, и издержки на поддержание этого пространства соответственно увеличиваются.
Изменить PGA
PGA обозначает глобальную область процесса, то есть глобальную область процесса. Каждый клиентский пользователь подключается к серверу Oracle, и сервер выделяет определенный объем памяти для поддержания соединения, и будет выполнять частные операции пользователя в этой памяти. Набор памяти, подключенный ко всем пользователям, образует PGA базы данных Oracle.
Oracle 10g обеспечивает автоматическое управление памятью PGA. Параметр pga_aggregate_target может указывать максимальное значение памяти PGA. Если параметр pga_aggregate_target больше 0, Oracle будет автоматически управлять памятью pga, а сумма PGA, занятая каждым процессом, не превышает значение, указанное в pga_aggregate_target.
Размер PGA по умолчанию Oracle 24M, очевидно, не может соответствовать требованиям. Измените размер PGA следующим образом:
scope = both используется коллегами для изменения текущей среды и запуска файла spfile
Ненормальная ситуация (база данных не запускается)
Когда Oracle 10g запускается, есть два основных файла параметров запуска: spfiledsid.ora и initsid.ora. Sid - это имя экземпляра, и порядок загрузки этих двух файлов: сначала попытайтесь получить spfilesid.ora, если получение не удалось, используйте файл initsid.ora для запуска. Ошибка запуска, вызванная неправильными параметрами запуска Oracle, доказывает, что конфигурация параметров в файле spfilesid.ora неверна, и этот файл является двоичным файлом и не может быть изменен вручную.
В это время перезапустите, используя указанный файл параметров запуска initsid.ora. Если вы не измените системные параметры в Oracle и не сохраните системные параметры в этом файле, файл останется первоначальными настройками. Путь к файлу обычно находится в $ (oracle) / database. Разные версии Oracle. Может быть другим. Может быть получен поиск
Системные параметры базы данных были восстановлены до конфигурации по умолчанию Oracle после запуска.
Индекс похож на каталог словаря.
Создание и использование индексов
Индексирование накладных расходов
Не все таблицы данных подходят для индексации. Это связано с тем, что создание индекса требует больших накладных расходов. Создание индекса для таблицы - это только часть издержек. Когда данные в таблице изменяются, необходимо поддерживать индекс. Конкретные операции для добавления, удаления и изменения данных отличаются.
Индексы повышают эффективность запросов не только потому, что база данных будет автоматически выполнять поиск по порядку, но также и стратегию обслуживания блоков индекса. Указатель аналогичен словарному каталогу, не только расположенному в алфавитном порядке, но и разбитому на страницы.
При вставке данных шаги по поддержанию табличных индексов также примерно одинаковы. Обычно вставка данных приводит к большим накладным расходам на обслуживание индекса, конечно, размер накладных расходов определяется порядком вставленных данных. Если значение индекса новой записи находится в конце. Это не сильно накладные расходы.
При удалении данных соответствующая запись индекса не удаляется, но добавляется флаг «Удалить», указывающий, что индекс недоступен.
При изменении данных ведение индекса эквивалентно выполнению операции удаления и вставки.
Описание: хотя индексы очень эффективны для повышения эффективности запросов, они обходятся за счет создания и поддержки индексов.
Сценарии использования индекса
1. Таблица с небольшим количеством данных
Время полного поиска по таблице незначительно. Использование индексов не повышает скорость запросов, а платит за обслуживание индекса.
2. Индексы не должны использоваться в таблицах с частыми изменениями данных
показатель успешности SQL-заявления
Поскольку оператор sql игнорирует регистр, один и тот же оператор sql имеет разные значения попаданий, поскольку регистр отличается, поэтому процент попаданий низкий.
Использование оператора SQL с передачей параметров может улучшить частоту обращений
существует и в
существует используется для определения существования, в используется для определения соответствия
Планы выполнения этих двух абсолютно одинаковы. Показывает, что использование в запросе было автоматически оптимизировано Oracle для существующих запросов
Как правило, существует быстрее, чем в, поэтому существует рекомендуется
не существует быстрее, чем нет, не существует рекомендуется
Разумное использование, где условия
При группировании запросов, где фильтрация перед группировкой лучше, чем группировка до фильтрации
Повторно использовать запрос с предложением
Используйте с при повторном использовании некоторого уже полученного набора результатов
Книга, которую вы держите в руках, является первым вводным учебником по описанию усовершенствованных методов оптимизации, а не попыткой вырастить еще одно поколение аналитиков, использующих старые, основанные только на здравом смысле методы анализа, которые вот уже более 10 лет загоняют,в тупик администраторов баз данных Oracle. Книга является сильно запоздавшим введением в тему производительности Oracle, порывающим с устоявшимися мифами о настройке, которые до сих пор бытуют на рынке.
"Oracle 101: настройка производительности" полезна по нескольким причинам. Это первая из вышедших из печати книг, в которой высший приоритет отдается задачам управления производительностью, что, как я полагаю, является самым необходимым для лиц, только начинающих обучение. Кроме того, она предоставляет начинающим аналитикам производительности необходимую информацию о работе ядра Oracle и поддерживающего эту работу стека технологий. Из этой книги вы сможете узнать, почему стоит потратить время на повторное создание (rebuilding) базы данных, в результате чего удается избежать ее фрагментации. Вы увидите, что основанные на избирательности строк оценки эффективности индекса являются ненадежными, а также прочтете о том, что даже 99-процентное попадание в буферный кэш не означает, что система работает с пиковой эффективностью. Гайя Кришна Вайдьянатха предложил мне еще на подготовительной стадии рассматривать его проект "Настройка производительности Oracle 101" как составную часть тех революционных изменений в производительности Oracle, которые я надеялась стимулировать созданием hotsos.com. Мы все слишком долго культивировали понятие "случайной производительности" (performance by accident). В конце 1999 г. Hotsos, сотрудничающая с нами компания Miracle A/S в Дании и несколько наших коллег во всем мире заявили о намерении создать более высокий стандарт качества и доступности информации для менеджеров Oracle. Думаю, что книга "Oracle 101: настройка производительности" станет необходимым первым шагом в осуществлении наших замыслов.
В каталоге Download Вы можете найти другие полезные материалы - утилиты, программы, документацию, исходники, электронные книги. Если Вы обнаружили неработающую ссылку, пожалуйста, помогите другим посетителям и администратору каталога Download - сообщите об этом редактору.
Прежде чем говорить об оптимизации производительности баз данных, нужно пояснить, каким показателем эта производительность измеряется, — тем более что в памяти многих людей, связанных с базами данных, еще жив показатель «время отклика», который многие привыкли считать универсальным мерилом производительности СУБД.
Проблема с так называемым временем отклика состоит в том, что оно, увы, относительно. Для конечного пользователя, системного администратора, сетевого администратора и администратора баз данных, оно разное и зависит не только от чистого времени отклика СУБД, но и от производительности кода бизнес-логики на сервере приложений, производительности веб-интерфейса, взаимодействия компонентов сетевой инфраструктуры, работы брандмауэра, балансировщика нагрузки и т. д. Поэтому для того, чтобы адекватно выражать производительность базы данных, надо пользоваться показателем Database Time, который выражает время, потраченное СУБД на выполнение конкретного вызова (запроса), с момента его поступления в базу данных и до момента выдачи последнего фрагмента выборки результатов. Более строгое определение Database Time — общее время, проведенное пользовательскими процессами в активном выполнении или активном ожидании выполнения вызовов СУБД.
Концепцию Database Time прекрасно иллюстрирует страница Top Activity в Enterprise Manager (Рисунок 1), где мы видим количество активных сессий и, в виде разноцветного графика,- распределение потраченного времени СУБД т.е. собственно Database Time.
Раньше процесс настройки СУБД был сродни блужданию в потемках — администраторы пытались применять те или иные настроечные параметры, которые, по их мнению, могли повлиять на поведение оптимизатора, варьировали их значения, ориентируясь на отзывы конечных пользователей, которые далеко не всегда замечали изменения в лучшую или худшую сторону.
Современная методология настройки производительности, которая называется Find-Fix-Validate (Рисунок 2), позволяет точно диагностировать проблемы производительности с помощью инструментальных средств анализа производительности СУБД, решать их с использованием средств автоматической настройки, входящих в набор Tuning Pack, и проверять корректность принятых мер средствами тестирования, входящими в пакет Real Application Testing.
Новейшие версии СУБД Oracle, в том числе, конечно, Oracle Database 12c, буквально “облеплены датчиками” производительности и помимо своей основной работы (выполнения запросов, оптимизации, выдачи результатов, координации действий пользователей) постоянно сообщают о том, чем они занимаются, — публикуют события ожидания и временные характеристики вызовов. Поэтому всегда точно известно, сколько времени у СУБД ушло на ту или иную активность.
Надо сказать, что компания Oracle к реализации этой возможности подошла довольно элегантно и не стала изобретать собственный язык для доступа к диагностической информации, а оформила ее в виде специальных таблиц Базы Данных, доступ к которым можно получить с помощью языка SQL и графического интерфейса Enterprise Manager 12c. Таким образом, мониторинг, диагностика и поиск первопричин различных проблем для пользователей СУБД Oracle максимально упрощен.
Таблиц, которые содержат необходимую информацию, немало, уже несколько сотен, статистика в них довольно разрозненная и к тому же накопительная. Но, разумеется, нет необходимости сравнивать показатели вручную, поскольку для сравнительного анализа полученных данных разработан специальный диагностический репозиторий Automatic Workload Repository (AWR), который периодически (по умолчанию – ежечасно) снимает с таблиц диагностическую информацию — различные классы ожидания, метрики, основную статистику, статистику по SQL-запросам и так далее. Данные AWR сохраняются в БД и используются для диагностических отчетов. Технология AWR Baselines позволяет создавать эталонные интервалы времени, сопоставляя бизнес-операции, например закрытие операционного дня, отчетного периода, расчета зарплаты и т. п. с интервалами снимков AWR и периодически проводить сравнительный анализ производительности для выбранного интервала. Эта технология позволяет быстрее делать анализ вариаций нагрузки и облегчает диагностику производительности базы данных.
AWR-отчет по умолчанию сохраняется в формате HTML (Рисунок 3, слева). Есть и новый тип отчета – он называется Performance Hub, – который отображает статистику работы БД в удобной и наглядной графической форме (Рисунок 3, справа).
В Oracle Database 12.1.0.2 появилась еще одна новая, очень удобная форма AWR-отчета — Active-HTML-отчет. Он сочетает в себе возможности навигации и детализации Enterprise Manager для оффлайн-анализа, его можно сохранять и отправлять по почте, как другие активные отчеты, для его просмотра не требуется Enterprise Manager.
AWR Warehouse — центральный репозиторий для долговременного хранения AWR-данных. Он хранится в отдельной, выделенной Базе Данных — таким образом, можно увеличить период хранения снимков AWR хоть до бесконечности, чтобы анализировать хронологию, посмотреть, что было год назад, 2 года назад и т. д. AWR Warehouse интегрирован во все экраны производительности БД Enterprise Manager и позволяет получить сравнительный отчет за любой период времени.
Функциональность Active Session History (ASH) — средство мониторинга, которое появилось в Oracle Database 10g. ASH ежесекундно делает снимки состояния активных сессий и записывает их в специальную структуру памяти (см. Таблица 1). Практически это мониторинг в режиме реального времени. В Enterprise Manager 12c появился очень удобный графический интерфейс к Active Session History, который называется ASH Analytics.
Встроенный в базу данных советчик Automatic Database Diagnostic Monitor (ADDM) помогает интерпретировать диагностику и находить первопричину плохой производительности. Сам по себе AWR-отчет — это достаточно объемный документ, в котором легко запутаться. ADDM помогает интерпретировать статистику, сохраненную в Workload Repository и находить первопричину проблем. ADDM анализирует потребление Database Time, соотносит его с активностью сессий и создает отчет с конкретными рекомендациями. Важно, что ADDM не просто ставит вас в известность о проблемах производительности БД, а выявляет причины проблем и ранжирует их по степени влияния.
Наконец, в Oracle Database 12 появилась улучшенная версия Real-Time ADDM, которая автоматически запускается при превышениях пороговых значений ряда параметров, например: количества сессий, чрезмерном потреблении процессорного времени, конфликтах и прочих событиях, понижающих производительность базы данных. Новый Real-Time ADDM отличается возможностями автоматического обнаружения и анализа проблем в реальном времени, автоматической диагностикой серьезных проблем производительности.
ADDM-отчеты сохраняются в AWR-репозитории для исторического анализа. Real-Time ADDM – это, также, средство аварийного мониторинга, которое при невозможности обычного соединения с базой данных — если она «намертво зависла» — может выполнить специальное диагностическое соединение и снять диагностику прямо из памяти СУБД. Встроенный в базу данных советник поможет в диагностике проблем и определит их причину. Всегда лучше начинать анализ именно с ADDM-отчета, потому что он содержит информацию из AWR и из ASH в удобном для первичного анализа производительности виде.
Для детального анализа выполнения SQL-запросов в Enterprise Manager имеется окно Real-Time SQL Monitoring, которое позволяет следить за тем, как выполняется конкретный SQL-запрос, по какому он выполняется плану и на каком шаге плана выполнения тратится больше всего ресурсов. В Real-Time SQL Monitoring есть очень интересные показатели, такие как Actual Rows и Estimated Rows. С помощью Real-Time SQL Monitoring можно также контролировать выполнение PL/SQL-процедур.
Практика показывает, что большинство проблем производительности Баз Данных возникают из-за SQL-запросов — либо некорректно написанных, либо, по разным причинам, неэффективно выполняющихся. Неполная статистика, новая версия оптимизатора, неправильные параметры, конфликты — есть тысяча причин, по которым SQL-запросы могут выполняться некорректно. Инструмент Oracle SQL Tuning Advisor дает рекомендации по повышению производительности проблемных SQL-запросов, используя все тот же оптимизатор SQL-запросов Cost Based Optimizer (CBO), но в специальном настроечном режиме, давая CBO больше времени на всесторонний анализ и проверку. В процессе анализа используются реальные и исторические AWR-данные и выявляются альтернативные планы выполнения запросов. Если при использовании параллельного SQL-профиля выполнение SQL-запроса ускорится в два или более раз, SQL Tuning Advisor порекомендует и его. Также, SQL Tuning Advisor проверит различные варианты рекомендаций и вы получите в Enterprise Manager отчет о том, какой SQL-запрос проанализирован и какие рекомендации по его настройке предложены.
Новая версия инструмента SQL Access Advisor, которая появилась в Oracle Database 12c, позволяет значительно сократить время анализа для больших SQL-нагрузок. SQL Access Advisor анализирует не единичные SQL-предложения, а SQL-нагрузку за определенный период времени. Теперь он работает гораздо производительнее и в десятки раз быстрее анализирует объекты БД.
И SQL Access Advisor, и SQL Tuning Advisor имеют графический интерфейс в Enterprise Manager.
Инструмент SQL Performance Analyzer (SPA), входящий в Real Application Testing обеспечивает тестирование в Oracle Database 10.2, 11g и 12c, позволяет предсказать влияние системных изменений Базы Данных на время отклика SQL, определяет результаты производительности SQL для каждого тестового выполнения SQL-нагрузки, анализирует различия в производительности и сравнивает результаты производительности конкретных SQL-запросов. При этом он оказывает минимальное влияние на производительность рабочей системы при захвате SQL-нагрузки в SQL Tuning Set (STS).
Новая возможность SQL Performance Analyzer — SPA Quick Check в Enterprise Manager позволяет быстро проверить изменения, скажем, параметров оптимизатора, влияющих на планы запросов. Например, если у вас в наборе тысяча запросов, а планы, в результате, изменятся только у десяти из них, то SPA Quick Check сначала выявит эти десять запросов и проведет сравнительное тестирование именно для них.
Отдельно стоило бы поговорить о проактивном подходе т.е. о том, как не допускать возникновения проблем с СУБД — об управлении планами запросов, но это отдельная тема, выходящая за рамки данной статьи.
Что почитать для изучения базы данных Oracle на русском языке? Собрали подборку книг администрированию и разработке на языке PL/SQL в среде разработки Oracle SQL Developer.
Oracle PL/SQL. Для профессионалов. Билл Прибыл, Стивен Фейерштейн
Книга представляет собой полное руководство по языку SQL. Рассмотрены основные принципы работы, структура языка, методика использования операторов и полная инструкция для работы с базами данных. Отдельными главами описаны вопросы безопасности и влияние объектных технологий.
Достоинства:
- тема понятно расписана, подойдет новичкам и практикующим программистам;
- есть примеры с подробным описанием;
- можно использовать и как учебник и справочник.
Недостатки:
- много воды;
- есть опечатки и неточности в переводе;
- автор мало делиться своим опытом, ссылаясь на опыт кого-то другого.
Oracle 11g. Боб Брила, Кевин Луни
Руководство, которое поможет поддерживать эффективную работы базу данных. С этой книгой можно научиться инсталлировать Oracle 11g или усовершенствовать более ранние версии, чтобы пользоваться всеми предлагаемыми возможностями. В книге рассматриваются многие технологии, которые способны сделать выполнение работы легче и эффективнее.
Достоинства:
- настольная книга администратор БД Oracle;
- в книге рассматриваются несколько версий и в целом книга полезная для общего развития.
Недостатки:
- много опечаток и неправильного перевода;
- устаревшая информация;
- перед прочтением необходимо иметь большой багаж знаний.
Секреты Oracle SQL. Санжей Мишра, Алан Бьюли
Авторы книги выходят за рамки просто обсуждения синтаксиса и способов применения. Они, используя Oracle 8i/9i, показывают, как использовать свой творческий потенциал в среде Oracle. Книга помогает приобрести уверенность в своих действиях и написании запросов языком SQL.
В книге описываются свойства, которые наиболее эффективны в применении конкретных задач. Рассказано об уникальных методах, использование которых помогает улучшить уже существующие приложения.
Достоинства:
- хороший стиль изложения и перевод;
- хорошо подойдет новичкам;
- все четко и по делу.
Руководство по диагностике и устранению проблем в Oracle
Книга содержит много полезных рекомендаций для надежной работы СУБД Oracle. Она представляет собой сборник проверенных решений, практических примеров и пошаговых инструкций для версий 12c и 1lg. Книга создана для того, чтобы опытные администраторы базы данных смогли эффективно и в кратчайшие сроки устранить серьезную проблему.
В книге рассмотрены тему построения и отображения таблиц, время задержки при ответах на запросы, настройка резервного копирования, тестирование баз данных, извлечение и перемещение данных больших объемов.
Oracle. Оптимизация производительности. Кэри Милсап, Джефф Хольт
Успех оптимизации производительности чаще всего достигается за счет интуиции и множества ошибок. Но авторы попытались в своей книге четко описать все методы надежного выявления проблем производительной системы. Программное обеспечение Oracle имеет возможность предоставлять информацию о трате времени при обработке запросов. Это и есть главный ключ метода, который состоит из нескольких этапов: выбор операции для оптимизации, просмотр конкретных данных о перерасходе времени и нахождение наиболее эффективного способа уменьшения затратного времени и повышение производительности операции.
Авторы рассказывают нюансы метода и объясняют, почему он эффективный. Книга предназначена для опытных программистов, разработчиков и администраторов.
Достоинства:
- достаточно подробно расписан материал;
- тема раскрыта полностью;
- полученные знания, можно смело применять на практике.
Недостатки:
Oracle PL/SQL за 10 минут. Бен Форта
Справочник имеет 26 урок по 10 минут каждый. Но потраченного времени будет достаточно, чтобы освоить тему SQL и найти ответы на возникшие вопросы. Книга поможет разобраться в языке Pl/SQL и научит его использовать в работе наиболее выгодно. В карманном справочнике в самом начале рассматриваются решения простых проблем и далее есть переход на более сложные темы: работа с подзапросами, процедуры хранения, ограничения в таблицах, соединения и курсоры.
Достоинства:
- компактная и в то же время понятная для новичков;
- без воды, прекрасно описывает основы новичкам и дает возможность освежить знания опытным программистам;
Ядро Oracle. Джонатан Льюис
В книге приведена вся необходимая информация о внутренней работе СУБД Oracle, чтобы администратор смог быстро устранить возникшую неполадку. Многие проблемы можно идентифицировать, если уметь применять действия ядра Oracle и знать все его функции.
В книге раскрываются темы выявления узких мест и их устранение, распознавание выполнение лишней работы, блокировка и сведение к минимуму ее простоев. Книга предназначена для тех, кто хочет совершенствовать свои знания и навыки.
Достоинства:
- книга способна заполнить пробела в знаниях и ответить на многие вопросы.
Недостатки:
Выводы
- Новичкам стоит прочитать «Секреты Oracle SQL» Санжей Мишра, Алан Бьюли, «Oracle PL/SQL за 10 минут» Бен Форта.
- Чтобы повысить свой уровень знаний и приобрести дополнительный опыт нужно прочитать «Ядро Oracle» Джонатан Льюис, «Руководство по диагностике и устранению проблем в Oracle» (читать в оригинале).
- Одновременно для новичков и для программистов подойдет книга «Oracle PL/SQL. Для профессионалов» Билл Прибыл, Стивен Фейерштейн.
Делитесь мнениями и хорошими учебниками по Oracle PL/SQL не попавшими в эту подборку в комментариях!
Читайте также: