Olá galera
Estou reprojetando um sistema e quero escrever procedures e functions no banco para evitar duplicação de código dentro dos meus forms.
Minha dúvida é a seguinte, o que funciona melhor em questão de performance: Escrever várias Store Procedures e acessalas conforme necessário ou reuni-las em uma Package ?
Abraços.
Performance: Criar muitas procedures ou uma package ?
-
- Moderador
- Mensagens: 367
- Registrado em: Ter, 25 Mar 2008 3:41 pm
- Localização: Salvador - BA
Rodrigo Valentim
Analista de Sistemas
Oracle Developer
Campanha: Faça uma pesquisa antes de perguntar!!!
Analista de Sistemas
Oracle Developer
Campanha: Faça uma pesquisa antes de perguntar!!!
Essa questão é muito pessoal, acredito que a performance não muda desde que bem escritas(ambas).
Eu acredito que fazer tudo dentro de Package (quando se tratar do mesmo processo) deixa o ambiente mais amigavel e organizado.
Eu acredito que fazer tudo dentro de Package (quando se tratar do mesmo processo) deixa o ambiente mais amigavel e organizado.
-
- Moderador
- Mensagens: 2016
- Registrado em: Qua, 12 Jan 2005 3:25 pm
- Localização: Araraquara - SP
Abraço,
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
To com o Rodrigo tb brow.
Costumo criar Packages por Módulos.
A de Vendas, a de Materiais, a do Financeiro, enfim, agrupar por afinidade.
Costumo criar Packages por Módulos.
A de Vendas, a de Materiais, a do Financeiro, enfim, agrupar por afinidade.
- dr_gori
- Moderador
- Mensagens: 5024
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Com certeza.
A criação de packages dá uma série de benefícios:
A criação de packages dá uma série de benefícios:
- Você pode escolher quais procedures são PUBLICAS ou não. (declarando ou não na package spec)
- Pode definir várias ASSINATURAS pra mesma procedure. (Por exemplo, procedure gera_log( entrada varchar2) e gera_log (entrada date ). A package vai saber qual procedure chamar de acordo com o tipo de parametro passado.
- Pode se tornar uma package FIXA na memória. (Pin Package). A oracle sugere sempre deixar na memoria as seguintes packages: STANDARD, DBMS_STANDARD, DBMS_UTILITY, DBMS_DESCRIBE, DBMS_OUTPUT
execute dbms_shared_pool.keep (' MINHA_PACKAGE');
- Como foi dito acima, packages são melhores de controlar, pois não geral um monte de dependências, não ficam "espalhadas" no banco pra alguém mexer e mudar alguma característica importante. Imagina você ter um sistema com 30 procedures e 30 funções.
- Pode se criar variáveis que são visíveis durante toda sessão.
-
- Rank: DBA Pleno
- Mensagens: 241
- Registrado em: Ter, 09 Out 2007 11:15 am
- Localização: Batatais - SP
aproveitando a resposta do dr_gori..
tenho uma package que é utilizada pelo menos uma vez por minuto.
o acesso a ela é feito varias vezes pelo telemarketing..
voces aconcelhariam eu colocar ela em memoria, dando este comando ai dbms_shared_pool.keep????
aqui não tem DBA, precisaria fazer alguma configuracao muito especifica para utilizar este recurso?
depois sempre q tiver alguma manutencao na mesma ela já ficaria automaticamente na memoria???
obrigado
tenho uma package que é utilizada pelo menos uma vez por minuto.
o acesso a ela é feito varias vezes pelo telemarketing..
voces aconcelhariam eu colocar ela em memoria, dando este comando ai dbms_shared_pool.keep????
aqui não tem DBA, precisaria fazer alguma configuracao muito especifica para utilizar este recurso?
depois sempre q tiver alguma manutencao na mesma ela já ficaria automaticamente na memoria???
obrigado
- dr_gori
- Moderador
- Mensagens: 5024
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Se é usado bastante, vale a pena sim. Mas use com sabedoria, pois não vale a pena colocar TUDO, pois você vai estar gastando recursos (memória). Coloque só o que é imprescindível e o que é vastamente usado. Daí vale a pena.
Quando você inicializa o banco tem que rodar o comando pra deixar ela na memória. Antigamente, eu vi um script que "inicializava" as packages mais usadas. Eles tinham em todas packages uma procedure que não fazia nada. (apenas um NULL). Dai quando startava o banco, eles rodavam essas procedures, apenas com a finalidade de colocá-las na memória.
Aqui tem um link com várias dicas a respeito:
http://www.dba-oracle.com/art_proc.htm
Quando você inicializa o banco tem que rodar o comando pra deixar ela na memória. Antigamente, eu vi um script que "inicializava" as packages mais usadas. Eles tinham em todas packages uma procedure que não fazia nada. (apenas um NULL). Dai quando startava o banco, eles rodavam essas procedures, apenas com a finalidade de colocá-las na memória.
Aqui tem um link com várias dicas a respeito:
http://www.dba-oracle.com/art_proc.htm
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 16 visitantes