PERFORMANCE EM BANCO DE DADOS — Oracle
Em um desenvolvimento de código comumente utilizamos, ao léu, querys SQL e blocos de processamento PLSQL, mesclando sua utilização. É…
PERFORMANCE EM BANCO DE DADOS — Oracle
Em um desenvolvimento de código comumente utilizamos, ao léu, querys SQL e blocos de processamento PLSQL, mesclando sua utilização. É também comum termos problemas com baixa performance que são normalmente ligados a má formação de consultas ou ao não entendimento da estrutura do código.
Dessa forma, separo este artigo como a primeira parte sobre o desenvolvimento PLSQL, em que fixo uma análise sobre o processamento em blocos PLSQL.
O sistema Oracle, por baixo dos panos, identifica de formas distintas as engines SQL e PLSQL, então por um processo de chaveamento faz trocas de contextos entre ambas engines enquanto executa as operações.
Com o passar dos anos, as versões Oracle foram se aperfeiçoando e, ao mesmo tempo, velhos costumes se mantiveram usuais. Antes com poucas (ou nenhuma) funções que pudessem ser utilizadas em um bloco PLSQL (Declare — Begin — End), se tornou prática o uso de consultas SQL (select from dual) dentro deles. Em códigos simplificados não há grandes problemas, onde a troca de contexto não é constante. Porém, em uma hipótese de loop*, onde a ação é repetida ’n’ vezes e ocorre outras ‘x’ trocas de contexto entre as engines, o processamento se torna mais lento.
Hoje em dia, para solução deste caso, eu enxergo duas saídas. A primeira é a modificação da consulta SQL por uma definição de parâmetro que revele o mesmo valor, essa parametrização sendo íntima ao contexto PLSQL e podendo ser repetidas quantas vezes fossem necessárias. Ou, em outra forma, a utilização da subquery caching, que mantém o uso da consulta, mas é transportada para dentro de uma subquery (select from (select from dual)), em resumo, o Oracle identifica a repetição de resultados e guarda em cachê, podendo ser usados novamente sem ter que executar toda consulta linha por linha.
O cuidado, para um bom desempenho na execução dos blocos, anônimos ou identificados, parte do uso de recursos de forma organizada e bem definida. Em posição de ‘declare’, o uso de cursores para alimentar o processo é bastante vantajoso, uma vez que no bloco os resultados serão parametrizados com apenas uma ação, podendo reutilizar a mesma variável sem termos que novamente chamar uma consulta. Em fase de BEGIN, a prioridade em carregar ou buscar dados por variáveis facilita o desempenho e a manutenção do código.
fonte: oracle.com
메타데이터
- post_id
- 84ea934afd98
- slug
- performance-em-banco-de-dados-oracle-84ea934afd98
- url
- https://medium.com/@rafnedel/performance-em-banco-de-dados-oracle-84ea934afd98
- canonical_url
- https://medium.com/@rafnedel/performance-em-banco-de-dados-oracle-84ea934afd98
- author_url
- https://medium.com/@rafnedel
- status
- ok
- fetched_at
- 2026-07-27 06:20:56