01.Blogs :
mauriciogonzatto  
.NET, C#, Oracle, Web, tecnologia em geral e diversidades.

BOAS PRATICAS DE PROGRAMAÇÃO PLSQL

Como nem todo mundo tem acesso ao GPO - Grupo de Profissionais Oracle, então eu decidi trazer este artigo do Haysar Alfredo Conte Maluf Lelis, para o pessoal do The Spoke!


BOAS PRATICAS DE PROGRAMAÇÃO PLSQL - PARTE 1


Ola !!! Estou enviando este artigo de "Boas Praticas de programação PL/SQL" ou seja, são alguns assuntos que acho interessante e uso no meu dia-a-dia. Estes tópicos são algumas dicas de como programar ou melhorar a programação.
Espero que gostem e se possível mandem algumas dicas para incrementar meu artigo...

1 - Introdução
Problemas com aplicações de baixa performance podem estar freqüentemente relacionados a consultas SQL mal estruturadas ou a um design de banco de dados ineficiente. A metodologia e tuning da Oracle, tradicionalmente é focada no design da aplicação e no tuning de consultas SQL antes mesmo de analisar quaisquer tipos de problemas relacionados à configuração do banco de dados.
A otimização de uma consulta constitui em determinar a melhor estratégia para executá-la no banco de dados. O otimizador do Oracle escolhe, por exemplo, se usará um índice ou não para uma consulta especifica e que técnicas de JOIN usar na junção de múltiplas tabelas. Estas decisões têm um impacto muito grande na performance de um SQL e por isso a otimização de uma consulta é essencial para qualquer aplicação e de extrema importância para a performance de um banco de dados relacional.
É muito importante que os desenvolvedores conheçam o otimizador do Oracle como também os conceitos relativos à tuning. Tal conhecimento irá ajudar a escrever consultas muito mais eficientes e rápidas. A proposta deste artigo é justamente fornecer uma base teórica e pratica dos principais conceitos relativos a tuning para que você já comece a escrever SQLs muito mais rápidos.

2 - SQL Performance e Tuning
2.1 - Conheça bem a aplicação como os dados contidos nela.
Informações idênticas quase sempre podem ser encontradas em diferentes fontes de dados. Se familiarize com estas fontes; você deve estar atento ao volume e a distribuição destes dados no banco de dados. Você também deve ter um profundo conhecimento do seu modelo de dados, como o relacionamento entre as entidades de negócios, antes de escrever seu SQL. Este entendimento vai ajudar a escrita de consultas mais eficientes para retirar dados de múltiplas tabelas.

2.2 - Entenda o Otimizador
O otimizador determina a maneira mais eficiente de se rodar um SQL. Para executar qualquer SQL o Oracle tem que derivar um "plano de execução". O plano de execução de uma consulta é uma descrição de como o Oracle irá implementar a recuperação dos dados para satisfazer a um determinado SQL. Desde a versão 7 até a 9 o Oracle possui dois otimizadores que serão descritos a seguir:

2.2.1 - Otimizador Baseado em Regra (Ruled Based Optimizer - RBO)
O RBO utiliza uma série de regras rígidas para determinar um plano de execução para cada SQL. Se você conhecer as regras você pode construir uma consulta SQL para acessar os dados da maneira desejada. O RBO não está sendo mais aperfeiçoado e foi descontinuado pela Oracle só sendo suportado até o Oracle 9i.

2.2.2 - Otimizador Baseado em Custo (cost Based Optimizer - CBO)
Introduzido no Oracle 7, o CBO tentar achar o plano de execução que possui o menor custo para acessar os dados tanto para uma quantidade de trabalho especifica como para um tempo inicial de resposta mais rápido. Os Custos de diferentes planos são calculados e a opção que apresentar o menor custo de execução é escolhida. São coletadas estatísticas referentes às tabelas do banco de dados e estas são usadas para determinar um plano de execução ótimo.
O CBO não entende as características relacionadas a uma aplicação, como também não pode entender completamente o impacto de relacionamentos complexos nos joins de algumas tabelas. Ele apenas possui uma fonte de informações limitadas, baseada em estatísticas, para determinar o melhor plano de execução para cada consulta. Como o CBO assume alguns valores relativos ao custo, o plano escolhido pode não ser necessariamente o melhor plano de execução. Portanto você deve estar sempre preparado para otimizar estes SQLs em busca do plano ótimo quando preciso.

2.3 - Entenda o que é seletividade
A seletividade é a primeira e mais importante medida do Otimizador Baseado em Custo. Ela representa uma fração de linhas de um conjunto resultante de uma tabela ou o resultado de um "join" ou um "group by". O CBO utiliza estatísticas para determinar a seletividade de um determinado predicado (clausula where ou having). A seletividade é diretamente ligada ao predicado da consulta como ID = 1245, ou uma combinação de predicados, como ID = 1245 AND STATUS=A. O propósito do predicado de uma consulta é limitar o escopo dela a um certo número de linhas em que estamos interessados. Portanto, a seletividade de um predicado indica quantas linhas de um conjunto vão ser filtradas por uma determinada condição.
A seletividade varia numa faixa de valores de 0.0 até 1.0 onde a seletividade de 0 indica que nenhuma linha será selecionada e 1 que todas as linhas serão selecionadas. A seletividade é igual ao numero de valores distintos que uma coluna possui. (1/NVD onde NVD significa o Numero de Valores Distintos).


Haysar Alfredo Conte Maluf Lelis - DBA
haysar@gmail.com

posted on Thursday, July 27, 2006 5:36 AM by mauriciogonzatto


 
03.UPDATE CALENDAR :
<July 2006>
SunMonTueWedThuFriSat
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345

05.MY LINKS :

07.Subscriptions :

Subscriptions


© Copyright 2005 Microsoft Corporation. All Rights Reserved.
Terms of Use | Privacy Statement | Code of Conduct | Hosted by MaximumASP for Microsoft
WHO-BAR