Describe the new PL/SQL compiler and features

Com o passar do tempo, temos novas versões do Oracle, em que a versão mais atual é a 12c, no qual sempre uso nos meus testes. Sempre que é lançada uma versão mais novas, nós temos novas melhorias feitas no compilador PL/SQL. Vamos ver algumas dessas melhorias neste post, não todas por que são inúmeras, mas umas das mais importantes. Lembrando que algumas dessas novidades são exclusivas do 12c!

Automatic Subprogram Inlining

Antes de falar desse modo automático, vamos entender o que é INLINE. Com o PRAGMA INLINE, com essa instrução, informamos ao compilador, se a chamada de um subprograma específico, deverá ser substituída por uma cópia desse subprograma ou não. Falo se sim ou não, por que no PRAGMA, devemos informar qual subprograma estamos nos referindo, e devemos dizer YES ou NO, se ele será “inlined” ou não. E também o Oracle não será obrigado a obedecer esta instrução de inline, é apenas uma sugestão. Com isto poderemos ganhar em performance. Veja um exemplo abaixo.

CREATE OR REPLACE FUNCTION f_ex RETURN NUMBER IS
BEGIN
  RETURN 1;
END;
/

DECLARE
  v_x NUMBER;
BEGIN
    PRAGMA INLINE(f_ex, 'YES');
    v_x := f_ex;
END;
/

Criamos uma function simples, retornando o número 1 apenas de exemplo, na linha 9 antes da chamada a function foi utilizada a instrução PRAGMA. A instrução deve preceder a chamada ao subprograma, assim qualquer chamada subsequente poderá ser inlined, e isso só irá afetar se for as seguintes instruções:

Assignment
Call
Conditional
CASE
CONTINUE-WHEN
EXECUTE IMMEDIATE
EXIT-WHEN
LOOP
RETURN

Agora, vamos voltar a falar sobre o Automatic Subprogram Inlining. Podemos habilitar esta função utilizando o valor 3 em PLSQL_OPTIMIZE_LEVEL. Com isto, o próprio Oracle irá procurar automaticamente por oportunidades de fazer um inline em chamadas a subprogramas.

UDF

Outro PRAGMA que podemos discutir aqui, será o UDF. Com essa instrução, estamos informando ao Oracle, que esta função será executada em instruções SQL, então ele irá otimizar para o mesmo, minimizando assim o famoso context switch, otimizando os subprogramas. Para utilizar esse pragma é bem simples, basta colocar no próprio CREATE da function.

CREATE OR REPLACE FUNCTION teste(p_a IN NUMBER) RETURN NUMBER IS
  PRAGMA UDF;
BEGIN
  RETURN p_a;
END teste;
/

Procedures e Functions no WITH

Já foi visto aqui no blog como utilizar a cláusula WITH. Agora essa clausula suporta blocos PL/SQL, e com uma performance incrível! Veja um exemplo abaixo de como utilizar.

WITH
  FUNCTION teste(p_a IN NUMBER) RETURN NUMBER IS
  BEGIN
    RETURN p_a;
  END;
SELECT teste(1)
FROM dual;
/
Anúncios

Meu nome é Tércio Costa, sou formado em Ciências da Computação pela UFPB, tenho a certificação Oracle SQL Expert e OCP PL/SQL, mantendo um blog reconhecido pela OTN(oraclepress.wordpress.com), no qual também publico artigos técnicos no portal OTN, no portal http://www.profissionaloracle.com.br/gpo e na revista SQL Magazine. Além de tudo isto sou um Oracle ACE Associate por estar sempre contribuindo para a comunidade com um bom nível de expertise.

Marcado com: , , ,
Publicado em PL/SQL

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.

Esse Blog é reconhecido pela
Certificações
Sou articulista

Clique para seguir este blog e receber notificações via email de novos posts.

Tércio Costa

Tércio Costa

Meu nome é Tércio Costa, sou formado em Ciências da Computação pela UFPB, tenho a certificação Oracle SQL Expert e OCP PL/SQL, mantendo um blog reconhecido pela OTN(oraclepress.wordpress.com), no qual também publico artigos técnicos no portal OTN, no portal http://www.profissionaloracle.com.br/gpo e na revista SQL Magazine. Além de tudo isto sou um Oracle ACE Associate por estar sempre contribuindo para a comunidade com um bom nível de expertise.

Links Pessoais

Serviços verificados

Visualizar Perfil Completo →

Total de Visualizações da Página
  • 138.077 Visualizações
%d blogueiros gostam disto: