Oracle должен загрузить код в общий пул в SGA, чтобы запустить его, да. Как правило, нет необходимости закреплять объекты в памяти, потому что Oracle устаревает их из общего пула на основе наименее недавно использованного алгоритма. Поэтому, если фрагмент кода вызывается часто, он будет храниться в общем пуле. Если он вызывается редко, возможно, он устарел, и вам может потребоваться перечитать его с диска при следующем вызове. Но обычно это именно то, что вам нужно - вы хотите оптимизировать вещи, которые происходят часто, и вы хотите нести расходы на несколько дисковых операций ввода-вывода, когда вы читаете нечасто доступный код с диска.
Inlining определяет, решит ли компилятор скопировать код для встроенной подпрограммы, что, как правило, делает скомпилированный продукт немного больше и, таким образом, требует немного большего пространства в общем пуле в обмен на то, что не нужно переходить к подпрограмме во время выполнения. Как правило, встраивание - это не то, что вы бы указали вручную с помощью PRAGMA
, это то, что автоматически позаботится компилятором, установив PLSQL_OPTIMIZE_LEVEL
в 3. Из справочника PL / SQL Language
При PLSQL_OPTIMIZE_LEVEL = 3 компилятор PL / SQL ищет возможности
встроенные подпрограммы. Вам не нужно указывать подпрограммы для встраивания.
Тем не менее, вы можете использовать прагму INLINE (с предыдущим синтаксисом) для
дать подпрограмму высокий приоритет для встраивания, а затем компилятор
подчеркивает это, если другие соображения или ограничения не делают включение
нежелательно.