Скомпилируйте хранимые процедуры как интерпретированные - PullRequest
0 голосов
/ 30 декабря 2018

Читая книгу по PLSQL, я наткнулся на этот фрагмент кода:

ALTER PROCEDURE pls_test COMPILE PLSQL_CODE_TYPE=INTERPRETED; 

Не могли бы вы объяснить, чем он отличается от обычной компиляции?Я не смог найти ответ в книге.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 30 декабря 2018

Oracle поддерживает два разных режима компиляции: INTERPRETED и NATIVE.

INTERPRETED - режим по умолчанию, который был введен одновременно с хранимым PL / SQL (Oracle 7):

... каждый программный модуль PL / SQL компилируется в промежуточный формат, машиночитаемый код (MCode).MCode хранится в словаре базы данных и интерпретируется во время выполнения

В показанном вами коде часть INTERPRETED является избыточной, поскольку соответствует режиму компиляции по умолчанию (если только команда не выполняется длясервер, чье значение по умолчанию было изменено).

NATIVE был введен в Oracle 9, затем улучшен и упрощен в следующих версиях:

Модули SQL (пакеты, триггеры, процедуры, функции и типы) .. скомпилированы ... в нативный код, находящийся в разделяемых библиотеках.Процедуры переводятся в код C, затем компилируются с помощью компилятора C и динамически связываются с процессом Oracle.

Это приводит к сокращению времени выполнения, поскольку во время выполнения интерпретация не требуется: прогнозируется фактор улучшенияот 1,04 до 2,4 в Oracle 10g.

В заключение: если у вас нет веских причин, вы хотите использовать NATIVE вместо INTERPRETED ...

Для получения дополнительной информации и возможного пути миграции,прочитайте эту статью о Oracle 10g FAQ и эту запись в блоге Oracle .

0 голосов
/ 30 декабря 2018

Ниже приведено краткое описание родной и интерпретированной компиляции.Интерпретированная компиляция является компиляцией по умолчанию в БД Oracle.Собственно скомпилированный код не нужно интерпретировать во время выполнения, поэтому он выполняется быстрее.

Собственная компиляция - это процесс, с помощью которого хранимая программа PL / SQL компилируется в собственный код (Pro * C), который выполняетне нужно интерпретировать во время выполнения.Для сравнения, код, который не компилируется изначально, хранится в промежуточной форме, которую необходимо интерпретировать во время выполнения.

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

Ссылка: [1] [2]

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