Может ли один SELECT значительно снизить производительность базы данных Oracle? - PullRequest
3 голосов
/ 13 февраля 2012

All

Рассмотрим

  • База данных Oracle версии 10gR2 или выше.
  • Аппаратное обеспечение, достаточное для превышения существующей пиковой рабочей нагрузки более чем на 100%

Можете ли вы построить любое обстоятельство, при котором один пользователь с одним соединением и доступом только для чтения к пользовательским таблицам (не системным таблицам или таблицам v $ или x $) ухудшает общую производительность базы данных Oracle. Также перечислите стратегию смягчения, если таковая имеется.

Как указано, учтите, что речь идет не о базе данных, которая находится на расстоянии нескольких циклов ЦП от насыщения, так что любая дополнительная нагрузка будет опасной. Это окно хорошего размера для текущей рабочей нагрузки.

Е.Г.

Если пользователь использует параллельную подсказку, Oracle может использовать очень высокий DOP для выполнения этого запроса и истощить другие процессы ЦП. Смягчение: объясните пользователю, что параллельные подсказки запрещены.

1 Ответ

6 голосов
/ 14 февраля 2012

Простейшим подходом было бы выдать запрос, который делает декартово произведение вашей самой большой таблицы само по себе несколько раз.Это довольно быстро уничтожит ваше табличное пространство TEMP и вызовет ошибки для других сеансов, которые необходимо отсортировать.Вы можете уменьшить это, предоставив ограниченные квоты на TEMP (что может быть сложно, если это учетная запись приложения, которая используется несколькими людьми одновременно, а не индивидуально идентифицируемой учетной записью) или с помощью диспетчера ресурсов для завершения сеансов, которые тоже запускаются слишкомlong или использующие слишком много ресурсов ЦП или В / В.

Даже без явного PARALLEL подсказки возможно, что Oracle будет использовать параллелизм автоматически.В зависимости от версии Oracle и того, как вы настроили параллелизм, включите автоматическую параллельную настройку, чтобы в любое время ограничить общее количество параллельных рабочих.Конечно, это не мешает пользователю, доступному только для чтения, создавать дюжину сеансов, каждый из которых порождает пару параллельных рабочих, которые перекрывают другие сеансы, которые вы на самом деле хотите запускать больше параллельных рабочих.Вы можете использовать Resource Manager для настройки приоритетов для различных типов рабочей нагрузки, если и когда система становится загруженной ЦП.

И если вы разрешите анонимный блок PL / SQL, есть больше способов, например, создать хаос, например.создание вложенной таблицы, которая заполняется миллиардами строк, пока ваша PGA не будет исчерпана.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...