Pragma Inline и Pinning объекты в оракуле - PullRequest
2 голосов
/ 30 марта 2012

Может кто-нибудь сказать мне, в чем разница между INLINE Pragma и pinned objects in oracle.

Согласно моему пониманию pinning objects means Keeping database packages in the Oracle database's Общий пул System Global Area (SGA )`

Inline Pragma указывает, что вызов подпрограммы является или не является встроенным.Встраивание заменяет вызов подпрограммы (для подпрограммы в том же программном блоке) копией вызываемой подпрограммы в compile time.

Является ли oracle также сохраняет скомпилированный код в SGA?1012 *, а также Inline Pragma для того же объекта в базе данных.

1 Ответ

3 голосов
/ 30 марта 2012

Oracle должен загрузить код в общий пул в SGA, чтобы запустить его, да. Как правило, нет необходимости закреплять объекты в памяти, потому что Oracle устаревает их из общего пула на основе наименее недавно использованного алгоритма. Поэтому, если фрагмент кода вызывается часто, он будет храниться в общем пуле. Если он вызывается редко, возможно, он устарел, и вам может потребоваться перечитать его с диска при следующем вызове. Но обычно это именно то, что вам нужно - вы хотите оптимизировать вещи, которые происходят часто, и вы хотите нести расходы на несколько дисковых операций ввода-вывода, когда вы читаете нечасто доступный код с диска.

Inlining определяет, решит ли компилятор скопировать код для встроенной подпрограммы, что, как правило, делает скомпилированный продукт немного больше и, таким образом, требует немного большего пространства в общем пуле в обмен на то, что не нужно переходить к подпрограмме во время выполнения. Как правило, встраивание - это не то, что вы бы указали вручную с помощью PRAGMA, это то, что автоматически позаботится компилятором, установив PLSQL_OPTIMIZE_LEVEL в 3. Из справочника PL / SQL Language

При PLSQL_OPTIMIZE_LEVEL = 3 компилятор PL / SQL ищет возможности встроенные подпрограммы. Вам не нужно указывать подпрограммы для встраивания. Тем не менее, вы можете использовать прагму INLINE (с предыдущим синтаксисом) для дать подпрограмму высокий приоритет для встраивания, а затем компилятор подчеркивает это, если другие соображения или ограничения не делают включение нежелательно.

...