Общие замечания о производительности кода PL/SQL

производительности кода PL/SQLМы уже рассмотрели разные способы повышения производительности программ PL/SQL (см. ссылки в конце статьи) Почти все они сопряжены с компромиссами: повышение производительности достигается за счет дополнительных затрат памяти, усложнения кода и затрат на сопровождение и т. д. Следующие рекомендации помогут вам оптимизировать код так, чтобы это принесло максимальную пользу как пользователям, так и группе разработки:

  •  Проверьте эффективность всех команд SQL. Оптимизация кода PL/SQL просто не компенсирует «балласта» в виде ненужных просмотров целых таблиц. Если код SQL работает медленно, в PL/SQL эту проблему не решить.
  •  Убедитесь в том, что оптимизация PL/SQL выполняется как минимум на уровне 2. Этот уровень используется по умолчанию, но разработчики нередко «экспериментируют» с параметрами компилятора, и в результате у них получается код, не полностью оптимизируемый компилятором. Директива условной компиляции $ERROR позволяет принудительно задать этот уровень.
  •  Используйте конструкции BULK COLLECT и FORALL при каждой возможности. Скажем, если в вашей программе выполняются запросы или команды DML, работающие на уровне отдельных строк данных, вам стоит переработать код для работы с SQL на уровне коллекций. Переработка курсорных циклов FOR не столь критична, но конструкции OPEN...LOOP...CLOSE всегда выбирают записи по одной и их следует переработать.
  •  Уделяйте особое внимание статическим наборам данных. Обнаружив такой набор, выберите оптимальный метод кэширования для предотвращения повторяющейся, высокозатратной выборки данных. Даже если вы еще не используете Oracle Database 11g и выше, начните инкапсулировать свои запросы в интерфейсах функций. Это позволит вам легко и быстро применить кэширование результатов функций при переходе на новую версию Oracle.
  •  Ваш код не обязан быть «самым быстрым из всех возможных» — вполне достаточно, если он будет «в меру быстрым». Иначе говоря, не пытайтесь фанатично оптимизировать каждую строку кода. Удобство чтения и сопровождения важнее «молниеносной быстроты». Сначала добейтесь того, чтобы ваш код соответствовал требованиям пользователя, а затем протестируйте его и выявите возможные узкие места. Избавьтесь от них, применяя специализированные приемы оптимизации.
  •  Убедитесь в том, что администратор базы данных хорошо знает параметры компиляции во внутренний код (особенно в Oracle11g и выше). С этими параметрами Oracle автоматически преобразует код PL/SQL в команды машинного кода.

Ссылки по теме:

Оптимизация приложений PL/SQL под Oracle

Средства оптимизации кода PL/SQL

Кэширование данных в PL/SQL

Ускорение запросов в PL/SQL с использованием FORALL и BULK COLLECT

Использование конвейерных табличных функций PL/SQL

Спец. приемы оптимизации кода PL/SQL (NOCOPY и др.)

 

Вас заинтересует / Intresting for you:

Управление приложениями PL/SQL...
Управление приложениями PL/SQL... 4633 просмотров Stas Belkov Thu, 16 Jul 2020, 06:20:48
Встроенные методы коллекций PL...
Встроенные методы коллекций PL... 14738 просмотров sepia Tue, 29 Oct 2019, 09:54:01
Работа с числами в PL/SQL на п...
Работа с числами в PL/SQL на п... 44831 просмотров Antoniy Mon, 28 May 2018, 16:45:11
Основы языка PL/SQL: использов...
Основы языка PL/SQL: использов... 4693 просмотров Ирина Светлова Tue, 06 Feb 2018, 14:04:03
Войдите чтобы комментировать