Escolar Documentos
Profissional Documentos
Cultura Documentos
Joinville
2008/2
J OS R ICARDO M AANEIRO
Joinville
2008/2
J OS R ICARDO M AANEIRO
AGRADECIMENTO
"No me preocupa que no exera um cargo, o que me preoculpa como me tornar capaz de um.
No me preocupa o no ser conhecido, mas procuro tornar-me
digno de ser conhecido"
Autnomo
RESUMO
ABSTRACT
This work boards consultations optimizations techniques, aiming at to demonstrate one adjusted
performance in the execution of the commands. Initially it presents the conceptual part of consultations optimization and stands out the importance of the monitoring. After that, it describes the
Oracle optimizer and the techniques of optimizations, such as creation of indexes and the use of
hints. The objective of this work is to present better visualization of problematic consultations in
a simple and agile form. In sequence this work will boards optimizations with the help of specifics tools and shows the benefits of performance with the alterations. The methodology used is
a use case, utilizing administrative and development tools for the help of the optimizations that
will be realized in the consultations of a help desk system of a defined company. We are able to
conclude that the utilizations of consultatioukns tools speeding up the identifications process of
consultations optimizations, for getting much pay-configured functionality.
Keywords: Consult. Performance. Optimization. Tools.
LISTA DE ILUSTRAES
Figura 1 Custo X benefcio sobre o ajuste do desempenho
Figura 2 Viso do processamento de consultas
Figura 3 Acesso a tabela via ndice
. . . . . . . . . . . . . . . . . . . . . . . . 18
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
. . . . . . . . . . . . . . . . . . . . 41
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
. . . . . . . . . . . . . . . . . . . . 44
. . . . . . . . . . . . . . . . . . . 45
. . . . . . . . . . . . . . . . . . . . . . . . 46
. . . . 46
. . . . . . . . . . . . . . . . . . . . 47
. . . . . . . . . . . . . . . . . . . . . . . . . . 50
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
. . 57
. . . . . . . . 58
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
. . . . . . . . . . . . . . . . . . . . . . . . 61
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
LISTA DE TABELAS
Tabela 1 Resultado da consulta na V$INSTANCE
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
. . . . . . . . . . . . . . . . . . . . . . . . . 49
. . . . . . . . . . . . . . . . . . . . . . . . . 65
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
LISTA DE SIGLAS
SGBD Sistema Gerenciador de Banco de Dados
SQL Structured Query Language
SGBDR Sistema Gerenciador de Banco de Dados Relacional
E/S Entrada e Sada
OEM Oracle Enterprise Manager
DML Data Manipulation Language
SUMRIO
1 INTRODUO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
17
17
19
. . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . .
19
. . . . . . . . . . . . . . . . . . . . . . . . .
20
22
25
. . . . . . . . . . . . . . . . . .
27
29
30
30
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . .
34
37
3 ESTUDO DE CASO
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
3.1 AMBIENTE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
. . . . . . . . . . . . . . . . . . .
42
43
3.2.2 Explain
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
3.2.3 Traces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
49
3.2.4 TKPROF
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
50
51
. . . . . . . . . . . . . . . . . . . . . .
53
59
. . . . . . . . . . . . . . . . . . . . . . .
64
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
68
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
69
REFERNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
70
ANEXOS
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
72
73
. . . . . . . . . . . . . . . .
74
. . . . . . . . . . . . . . . . . . . . . . . . .
75
15
INTRODUO
Com o avano tecnolgico, os processos tornam-se muito mais geis, sendo hoje tambm
indispensvel a utilizao desses sistemas para o processamento do alto nmero de informaes que so geradas diariamente por todos os setores de uma organizao como recursos
humanos, financeiro entre outros. H necessidade que essas informaes estejam disponveis
de forma cada vez mais rpida e consistentes sempre que forem requisitadas.
Assim, muitas empresas implementam a utilizao de banco de dados para armazenamento
de suas informaes de modo confivel e com alta performance tanto de processamento quanto
de recuperao das mesmas, permitindo tambm a utilizao de aplicaes externas.
Embora existam no mercado diversos Sistemas Gerenciadores de Banco de Dados, ser
trabalhado com o produto desenvolvido pela Oracle, por se tratar de um software robusto, que
atende pequenas e grandes empresas, sendo assim um dos mais utilizados atualmente e considerado extremamente estvel e funcional. Ele responde a todas as expectativas com milhares
de acessos simultneos. Essas caractersticas levam necessidade de conhecer suas ferramentas e at mesmo ferramentas desenvolvidas por demais empresas a usufruir todos os seus
recursos.
Entretanto, no se conta com a utilizao de todos esses recursos, pois, essas empresas
que trabalham com suas informaes digitalizadas, deparam-se diariamente com uma certa
lentido com que essas informaes so resgatadas.
Nessas empresas so apresentados os mais diversos tipos de ambientes existentes, utilizando muitas vezes sistemas antigos no desenvolvidos para trabalhar em ambientes de alto
nvel de performance. Dessa forma, acabam no oferecendo um trabalho otimizado, tornando
a manuteno muito mais complexa e trabalhosa.
O objetivo deste trabalho de concluso de curso a aplicao de ferramentas de anlise,
para assim propor um cenrio com consultas mais eficientes. Onde ser descrito maiores detalhes das ferramentas de anlise, que sero utilizadas para a realizao do processo de tuning
das consultas.
Ser realizado um estudo de caso utilizando ferramentas da prpria Oracle e de software
proprietrio, neste caso a PL/SQL Developer, para esta pesquisa. Tambm sero utilizados
mtodos de coletas que sero extradas das prprias ferramentas propostas para monitorao,
desenvolvimento e execuo dos testes, permitindo uma viso real dos problemas no cenrio
proposto.
Alm disso, ser preparado um banco de dados Oracle para a realizao desses testes
e assim possibilitar a aplicao de ferramentas para extrao e anlise das consultas, tendo
16
como base de estudo o Sistema Gerenciador de Banco de Dados (SGBD) Oracle de onde as
anlises, as consultas e as melhorias pretendem ser obtidas e aplicadas.
No captulo dois deste documento, sero apresentados os conceitos de otimizao das
consultas no banco de dados, a otimizao das consultas Structured Query Language (SQL),
as carctersticas do Otimizador do SGBD e de forma mais especfica o da prpria Oracle, a
otimizao atravs de ndices, a aplicao de Hints, sugerindo o melhor plano de acesso a
ser realizado e alguns utilitrios para o auxlio da monitorao e melhorias no desempenho de
uma base de dados. Tem-se tambm as caractersticas das principais ferramentas que sero
utilizadas para a anlise e identificao das consultas com problemas de desempenho, que
sero mais a frente utilizadas para a manuteno dessas consultas.
No captulo trs onde o estudo de caso ser relatado. Nele tambm ocorrer a abordagem
das consultas SQL, os resultado dos testes, solues propostas e as aplicadas, todas com suas
devidas comparaes de ganhos e custos, atravs de amostragens obtidas com a utilizao das
ferramentas que foram sugeridas nesse documento.
Em seguida, sero realizadas as concluses obtidas com os resultados do estudo e sugestes para a realizao de novas pesquisas.
Por fim, se encontram os anexos com os resultados das consultas que foram realizadas
antes do processo de tuning, para obter-se um valor de comparao, fundamentando, assim, a
necessidade dessas melhorias.
17
2.1
caes, que utilizam SQL, est relacionada a erros encontrados no modelo de dados fsico,
ocupando uma parcela de 25% do total. Os demais 65% ficam a cargo de problemas relacionados aplicao, estando assim ligado diretamente equipe de desenvolvimento 90% da
totalidade.
Diante disso, necessrio, para a identificao dos problemas de desempenho de um
banco de dados, efetuar um monitoramento constante dos processos que venham a ser executados nessa base, tendo como objetivo nico a preveno de problemas de desempenho, tarefa
normalmente realizada por Administradores de banco de dados, desenvolvedores, analistas de
sistemas e projetistas (GONALVES, 2004).
Com o monitoramento, pode-se identificar quais processos esto consumindo muita memria, processamento e atividades de disco - Entrada e Sada (E/S), ou demorando muito para
serem executados. Muitas vezes, esses problemas so relatados diretamente pelos usurios
que esto obtendo uma resposta com um tempo consideravelmente alto ao executar um determinado processo. O monitoramento do desempenho de uma base de dados deve ser realizado
de forma satisfatria, pois se torna de extrema importncia no sucesso de implementao das
aplicaes. O monitoramento que apontar os pontos crticos e tambm auxiliar os desenvolvedores a identificar as falhas. Para que o plano venha a ser efetuado com sucesso, dever
contar com auxlio de ferramentas para ajudar na monitorao do desempenho e o ajuste do
sistema (MOLINARI, 2003).
Tambm sero apresentadas, no decorrer do trabalho, de forma mais detalhada, as ferramentas que podem ser utilizadas para realizar diagnsticos de desempenho, otimizar e melhorar
a performance das rotinas que acessam ou executam algum processo na base de dados.
Entre elas, sero utilizadas ferramentas que a prpria Oracle disponibiliza juntamente com
o banco de dados, e tambm ferramentas desenvolvidas para facilitar o desenvolvimento de
sistemas em linguagens como PL/SQL destinado a armazenamento em banco de dados Oracle
e que possui funcionalidades de monitoramento para anlise, essas ferramentas apresentam
solues para a analise e melhorias em consultas SQL. Algumas dessas ferramentas so capazes de monitorar e identificar os gargalos, contidos nos programas que acabam degradando
o desempenho dos sistemas e da base de dados .
18
Entre essas ferramentas, tem-se o OEM, desenvolvida pela prpria Oracle, mais indicada
para a administrao dos bancos de dados. Com ela, pode-se monitorar reas cruciais relacionadas ao desempenho do banco de dados. O OEM possui diversas funcionalidades agregadas
que possibilitam assim a visualizao de toda uma base de dados de forma grfica ou gerao
de tabelas. Entre essas informaes, pode-se citar, uso de CPU, memria, acesso a disco entre
outras (ORACLE9I, 2001).
Quanto s atividades de monitoramento, podem ser classificadas em dois tipos:
Com o grfico da Figura 1, ilustram-se as variaes que ocorrem durante toda a fase do
ciclo de vida de uma aplicao. As cores mostram o grau de complexidade em relao aos
pontos onde os problemas tornam-se mais precrios para serem solucionados. A ilustrao
tambm demonstra que o quanto antes existir a preocupao com o ajuste do desempenho,
mais benefcio e menos custo o projeto da aplicao apresentar.
19
2.2
2.3
um Otimizador (optimizer no caso do Oracle) responsvel por otimizar os comandos Data Manipulation Language (DML)(Linguagem de Manipulao de Dados), onde esses comandos sero
executados, seguindo um plano de execuo ou por meio de regras definidas no sistema (GONALVES, 2004). Segundo Molinari (2003), esse Otimizador responsvel de escolher, aps a
solicitao de uma operao, um plano de execuo, visando da melhor forma possvel o que
foi solicitado. Sendo assim, quando efetuada uma requisio SQL (SELECT, UPDATE, DELETE ou INSERT ), aps a analise, caso haja a necessidade, o Otimizador optar para o melhor
caminho a ser realizado, garantindo o desempenho, de forma que o usurio nem tenha conheci-
20
mento, pois, a escolha do melhor caminho realizada internamente. Dessa forma, mostra que
o Otimizador possui vrios conhecimentos que o ajudam neste trabalho (CERCOLA, 1995).
Date (2006) anuncia que a otimizao, de forma automtica, ideal para os usurios que
no possuem muitos conhecimentos para efetuar seus prprios ajustes em suas consultas SQL,
afirmando assim que h mais de uma razo para que o Otimizador realize a escolha do melhor
caminho, do que o usurio, entre elas:
a) O banco de dados emprega estatsticas aos mais diversos objetos, so informaes que
o usurio no possuem, ao contrrio do Otimizador.
b) O Otimizador capaz de testar centenas de estratgias para obter o melhor desempenho, atitude que no seria realizada por um ser humano e muito pouco vivel para o
requisito tempo.
c) Os Otimizadores foram desenvolvidos pelos conhecimentos e servios de timos programadores, tornando assim o fruto desse conhecimento disponvel para o usurio oferecendo assim uma maior quantidade de recursos.
O Otimizador busca a melhor opo de plano para acesso aos dados, tendo assim um
papel importante na otimizao dos comando SQL. O Otimizador tm a capacidade de ler
as expresses inseridas e execut-las da melhor forma possvel ao seu ver. Para Gonalves
(2004), apesar de grandes esforos do Otimizador, haver situaes em que o usurio escolher
a forma mais eficiente para obter as informaes desejadas. Nesses momentos, nota-se que
seria interessante o trabalho de um desenvolvedor com outros conceitos em paralelo com o
Otimizador, buscando, dessa forma, atender a todos os requisitos de desempenho esperados.
Entretanto, at o Otimizador chegar ao seu entender que o plano de execuo que ele veio
a escolher o melhor, j efetuou uma srie de tarefas para avaliar expresses e codificaes,
encontrando assim a melhor forma de acesso aos dados, como no caso do SELECT apresentar
mais de uma tabela, qual as ligaes (joins) que sero utilizadas (TUNNING/TEKNO, p.5-2).
2.4
PROCESSAMENTO DE CONSULTA
Para Date (2006), o processamento se divide em quatro grandes estgios, demonstrando
Estgio 1 converter a consulta para um formato interno: traduz a consulta original efetuada para um formato que venha a ser identificado pela mquina para realizar as instrues, lapidando o cdigo e assim removendo detalhes da sintaxe que o SQL utiliza
21
Estgio 3 Escolher procedimentos candidatos de baixo nvel: nesse ponto ser analisado como a consulta j convertida e transformada ser executada, efetuando consultas
como ndices existentes nas tabelas ou outros caminhos de acesso, distribuio de valores, cluster fsico de dados armazenados etc;
Estgio 4 - Gerar planos de consultas e escolher o mais barato: Nesse ltimo estgio, ser
realizada a montagem de um conjunto de planos de acesso para assim serem avaliados.
O plano a ser escolhido, vai ser aquele que apresentar um custo mais econmico, utilizando frmulas de custo e os conhecimento das estatsticas do banco de dados. Esses
planos so constitudos por uma srie de procedimentos, e assim se tornam responsveis
pela implementao das operaes.
A Figura 2 mostra os estgios do processamento da consulta.
22
2.5
O OTIMIZADOR DO ORACLE
Para Niemiec (2003), o modo de otimizao que o banco de dados utilizar definido no
23
24
25
Como se pode ver, o Otimizador tem em vista sempre obter o melhor desempenho para
uma consulta ou o mais prximo possvel. No entanto, pode-se notar a importncia que se deve
dar ao ANALYZE, pois sem o mesmo atualizado freqentemente no se alcanar o desempenho desejado. Ele poder transformar essas consultas em expresses equivalentes, caso haja
necessidade, para se obter um ganho de desempenho. O tpico 2.6 mostrar alguns conceitos
de identificao de problemas de desempenho dessas consultas.
Para acompanhar e saber qual caminho de acesso foi utilizado pelo otimizador para a execuo da consulta, podem ser utilizados alguns dos utilitrios: EXPLAIN PLAN, AUTOTRACE e
TKPROF (FERNANDES, 2002).
2.5.1
O uso de ndices uma das principais tcnicas utilizadas normalmente por administradores
de banco de dados, visando aumentar o desempenho de comandos SQL (SELECT, UPDATE e
DELETE).
Os ndices so estruturas internas do banco de dados. Tm como propsito fornecer ponteiros, funcionando assim como endereos para as linhas de uma tabela que possui determinado
valor de chave, aumentando assim o desempenho das consultas SQL que venham acessar um
percentual pequeno de linhas contidas nessas tabelas (FERNANDES, 2002).
Todos os ndices criados para as tabelas podem ser consultados na DBA_INDEXES e
tambm na USER_INDEXES. Na USER_INDEXES, encontram-se algumas colunas como TABLE_NAME, INDEX_NAME e DISTINCT_KEYS, que mostram o nome da tabela, nome do ndice e a sua seletividade. Na seletividade, encontra-se o nmero de registros que esto sendo
referenciados na tabela, de acordo com a chave criada para o ndice, e quanto mais prximo
do nmero total de linhas estiver o valor contido na coluna DISTINCT_KEYS, melhor o ndice,
pois, retornar uma menor quantidade de linhas para cada valor distinto e assim menor ser
o tempo de execuo do comando. Ao criar uma chave primria para uma tabela no Oracle,
automaticamente criado um ndice que possuir um nmero de seletividade igual ao nmero
de registros na tabela, tornando o mesmo um dos melhores ndices para ser utilizado em uma
consulta SQL (GONALVES, 2004).
Segundo Gonalves (2004), algumas vezes, o ndice no se torna vivel caso ocorra a necessidade de se resgatar muitos registros. Ao contrrio, o tempo de retorno ser satisfatrio. O
mesmo enfatizado por Fernandes (2002), segundo o qual, um ndice aumenta o desempenho
se o mesmo abordar um percentual baixo de linhas. Tambm apresenta algumas consideraes
sobre a utilizao de ndices, como:
26
27
A Figura 3, mostra acessos utilizando ndices. So procuradas as ROWIDs no ndice, dentro dos critrios da clusula WHERE, realizando dessa forma, o acesso direto dos registros
contidos na tabela.
Na Figura 4, a tabela no possui ndice, realizando assim uma leitura completa dos blocos correspondentes aos dados (leitura de todos os registros da tabela), retornando somente
aqueles que correspondam aos critrios da consulta.
Segundo Gonalves (2004), a melhora do desempenho obtido, por meio dos ndices,
notado em instrues como SELECT, UPDADE e DELETE. J em instrues de INSERT,
encontra-se uma queda de desempenho. O fator ocorre, pois com a insero de uma linha
na tabela que possua colunas indexadas, o registro ter que ser inserido no ndice correspondente, apresentando assim uma maior lentido.
Contudo, sempre se deve analisar os benefcios que determinados ndices possam apresentar ao serem criados em uma tabela, e se realmente vivel ou no permanecer com os j
existentes.
2.5.2
28
Por meio dessas sugestes, o Otimizador realizar um plano de execuo com base no que
foi declarado. Porm, por no se tratar de um comando, os hints podero ser desconsiderados
pelo Otimizador (NIEMIEC, 2003).
Com essas sugestes, pode-se especificar ao Otimizador informaes de como ser a
abordagem para o comando SQL, o alvo quando a abordagem baseada em custo e o caminho
de acesso para as tabelas acessadas pelo comando SQL (TUNING, 2003).
Segundo Niemiec (2003), os modelos de sugesto mais utilizados so:
SELECT /*+ INDEX (tabela ndice1, ndice2...) */ coluna1, ... from tabela...
ORDERED: especifica a ordem principal das tabelas;
Sintaxe:
SELECT /*+ PARALLEL (tabela, DEGREE, INSTANCES) */ coluna1, ... from tabela...
FIRST_ROWS: apanha as primeiras linhas mais rapidamente, fora o uso de ndices de
modo geral;
Sintaxe:
29
2.6
mentas que possibilitam efetuar o monitoramento e identificar possveis gargalos que essas
consultas causam ao banco de dados, assim degradando o desempenho do mesmo.
Uma das ferramentas normalmente instalada junto ao processo instalao do banco de
dados Oracle o OEM, que pode ser utilizado para efetuar a monitorao das reas cruciais
relacionadas a desempenho do banco de dados de forma grfica.
A Oracle tambm disponibiliza a ferramenta Oracle SQL Developer, basicamente um SQL*Plus,
porm conta com uma interface grfica.
Outra ferramenta muito utilizada por fornecer uma srie de funcionalidades embutidas o
PL/SQL Developer.
As funcionalidades das ferramentas citadas anteriormente sero definidas no tpico 2.7
logo a seguir.
H tambm o TRACE, que um utilitrio utilizado para medir estatsticas de tempo e desempenho de uma determinada consulta, um processo em lote, ou at mesmo por o banco em
modo trace, visando descobrir gargalos. O comando gera arquivos ".trc", este encontra-se em
modo binrio, tendo que passar pelo TKPROF, para que possa ler as informaes, como tempo
total de processamento, nmero de blocos acessados em disco, nmero de linhas acessadas,
entre outras informaes (NIEMIEC, 2003).
Para converter os arquivos gerados com o trace para modo texto (.txt), e assim possibilitar a
sua leitura, utilizado o TKPROF, que tambm de grande utilidade para a gerao de planos
de execuo (GONALVES, 2004).
Os administradores e desenvolvedores contam com o EXPLAIN PLAN para visualizar o
plano de execuo dos comandos SQL. As informaes do plano de execuo, que foram resgatadas, so armazenadas na tabela PLAN_TABLE do banco de dados, onde o administrador
ou desenvolvedor pode consultar e analisar, verificando assim se h a necessidade de ajuste
da consulta para obter um ganho de desempenho (FERNANDES, 2002).
O SQL*Plus uma ferramenta constantemente utilizada pelo administrador. Com ela podese criar, copiar e remover as bases de dados, utilizando comandos SQL. Essa ferramenta
tambm utilizada para a gerao de relatrios, tornando-se muito til para realizar o monitoramentos da base de dados. Por meio do SQL*Plus, pode-se habilitar o utilitrio de AUTOTRACE,
gerando assim automaticamente um EXPLAIN PLAN e as estatsticas das consultas que sero
utilizadas, aps a execuo do comando SET AUTOTRACE ON, antes de realizar as consultas
(FERNANDES, 2002).
30
2.7
de ferramentas para se obter um maior controle das informaes existentes nessas bases de
dados. Sem a utilizao de ferramentas administrativas e de desenvolvimento, o processo seria
muito mais demorado e por que no dizer, um ambiente com probabilidades de conter muito
mais erros, pois, se tratariam de rotinas que seriam efetuadas manualmente com comandos
desenvolvidos medida que os erros aparecessem.
Alm disso, h a necessidade de que esses acertos sejam realizados em um perodo de
tempo curto por se tratarem, muitas vezes, de processos crticos. Para tanto, faz-se o uso
dessas ferramentas.
Neste tpico, tem-se como principal intuito abordar algumas ferramentas utilizadas atualmente no mercado, que so desenvolvidas pela prpria Oracle e por outros fabricantes.
2.7.1
PL/SQL DEVELOPER
A ferramenta PL/SQL Developer um ambiente de desenvolvimento integrado (IDE), destinado ao desenvolvimento de programas que venham a utilizar o banco de dados Oracle para
armazenamento de suas informaes e dados. Trata-se de uma ferramenta de software proprietrio, desenvolvida pela Allround Automations.
O PL/SQL Developer abrange um conjunto de conceitos-chave para os projetos de desenvolvimento de aplicaes Oracle. Essa ferramenta traz funcionalidades bastante utilizadas por
desenvolvedores e administradores de banco de dados Oracle, funcionalidades que sero descritas logo abaixo.
A Figura 5 apresenta uma viso inicial do PL/SQL Developer.
a) Query Builder: A ferramenta Query Builder permite elaborar consultas ou alterar consultas j existentes. Auxilia de forma rpida e eficiente a alterao de um ou mais campos
em um SELECT j existente. Criam-se assim as consultas de forma grfica como mostra a Figura 6, apontando os seus relacionamentos, as clusulas WHERE e ORDER BY,
JOIN de tabelas.
31
b) SQL Window: uma Ferramenta muito utilizada pelos analistas e at mesmo pelo administrador do banco de dados. Ela permite executar instrues SQL, possibilitando assim
visualizar os resultados em forma de tabela, tendo vnculo tambm com ferramentas
que trabalhem com planilhas (ex.: Excel da Microsoft) podendo assim gerar planilhas
externas com os dados resgatados. Essa ferramenta permite tambm, em modo FOR
UPDATE, como mostra a Figura 7, que sejam realizadas alteraes na grade de consultas (sempre respeitando as permisses dos usurios e restries previamente definidos
32
na tabela, como campos que no permitem ser nulos, nmero de caracteres, coluna que
no permite duplicidade da informao entre outras).
d) Reports: um gerador de relatrios, como mostra a Figura 9, obtendo assim uma maior
facilidade na gerao dos mesmos, pois oferece inmeros relatrios j padronizados, e
33
Figura 9: Reports
Fonte: Automations (2008)
e) Object Browser: Possui um visualizador de objetos, tal como mostra a Figura 10, podendo assim visualizar as dependncias entre as tabelas, editar tabelas ou dados de
view, recompilar objetos invlidos, habilitar ou desabilitar objetos, remover objetos e outras funcionalidades.
34
f) Performance Optimizing: Para otimizao das consultas, pode ser utilizado o PL/SQL
Profiler. Na Figura 11, pode-se visualizar um reltrio com diversas informaes, possibilitando a visualizao do tempo de execuo e estatsticas, entre elas encontra-se o
uso do processador, atividade de disco (E/S) e outras atividades caso haja a necessidade.
g) Tools: O PL/SQL Developer tambm fornece outras aes que tornam a administrao,
manuteno e desenvolvimento muito mais fcil. Possui ferramentas que auxiliam na
importao e exportao de objetos, na recompilao de objetos invlidos, no monitoramento de alertas e eventos que venham a ocorrer no banco de dados entre outras.
2.7.2
Na verso 10g, o gerenciamento do banco de dados Oracle, possui sua interface baseada
na Web. Essa uma ferramenta fundamental para gerir os bancos de dados, obtendo assim
um controle dos dados e maior facilidade para a administrao, por se tratar de uma ferramenta
com muitas informaes em modo grfico.
Ela tambm oferece tarefas administrativas como a criao e alterao de objetos, como
tablespaces, criao e alterao de tabelas e ndices entre outras. Tambm auxilia na gesto
da segurana da base, concedendo privilgios a determinados usurios que venham a ter necessidade de visualizar, remover, inserir ou at mesmo alterar dados contidos em objetos de
outro usurio (cada caso respeitando a regras de auditoria de cada empresa).
Atravs do OEM, pode-se realizar configurao da rotina para gerao de cpias de segurana, auxiliando tambm na recuperao da base de dados com a realizao de importao e
exportao de dados.
35
O OEM oferece uma interface grfica, onde, se pode visualizar informaes sobre o desempenho da base de dados. Permite alterar o tempo de atualizao da tela ou configur-la para
que torne tal procedimento de forma manual caso ocorra a necessidade de uma anlise mais
cautelosa em determinado momento.
A ferramenta oferece tambm um amplo banco de Informaes, quando se trata do fator
ajuda, como ajudas especficas, em nveis superiores de ajuda que levam a uma tabela de links
para determinados tpicos.
Na Figura 12, tem-se a tela inicial do OEM. Nela h informaes gerais do banco de dados, como o status, data de abertura da instncia, diretrio do ORACLE_HOME, atividades de
sesso e processamento, informaes de utilizao de espao tanto de memria quanto de
arquivos, erros de Alert (citado por alguns autores como dirio do DBA, onde o OEM informa
atividades do banco de dados e erros ocorridos) e informaes sobre variveis do banco.
36
A OEM, como j citado, uma ferramenta grfica baseada na Web, que permite efetuar
operaes de gesto, iniciar e encerrar o banco de dados, criar e remover objetos entre outras.
Essas operaes so realizadas, utilizando o SQL, linguagem de programao utilizada para
manipular os dados contidos no banco e para realizar uma srie de tarefas administrativas.
Na realizao dessas tarefas, o OEM oferece uma opo de visualizar a instruo que ser
realizada.
Tambm se pode encontrar no prprio OEM um atalho para acessar o iSQL*Plus. o
mesmo ambiente encontrado na ferramenta SQL*Plus, porm, via Web. A ferramenta torna-se
muito til para o administrador, levando-se em conta que muitas informaes necessrias para
a administrao do banco no dia-a-dia ainda no possuem no OEM (no se torna vivel inserir
todos os comandos para o resgate dessas informaes no OEM, por se tratarem de inmeras
opes, tornaria assim uma ferramenta muito mais complexa e lenta).
37
2.7.3
38
A ferramenta Oracle SQL Developer possui uma semelhana com o PL/SQL Developer,
porm cada qual possui os seus diferenciais e limitaes como acesso a bases de dados no
Oracle pela ferramenta Oracle SQL Developer.
39
ESTUDO DE CASO
O presente estudo de caso pretende abordar a identificao de consultas SQL com problemas de desempenho, com a utilizao de ferramentas de monitoramento que auxiliaram na
visualizao dos pontos que apresentam problemas, ferramentas citadas no captulo anterior,
executando tambm gerao e anlise de traces (planos de execuo e os respectivos custos
das consultas).
Com base na coleta dos dados e suas anlises, pretende-se otimizar as consultas e obterse um melhor desempenho. Dessa forma, melhorar os tempos de acesso aos dados em uma
pesquisa, tendo como resultado a economia do uso do servidor de forma desnecessria.
E, por fim, apresentar a importncia da construo das consultas, de forma bem planejada
e o impacto que essas consultas, desenvolvidas sem o devido conhecimento, podero causar
em uma empresa.
3.1
AMBIENTE
O ambiente proposto para os testes uma mquina virtual e o sistema de virtualizao
10.2.0.1.0
OPEN
40
dados exportados de uma base de Help Desk de uma determina empresa. O nome do usurio,
tablespace, e alguns registros foram alterados, a fim de preservar os dados e a empresa.
Para se obter um ambiente mais real, tm-se seis conexes que se encontram ativas constantemente, pr-configuradas em dois scripts (select_tables.bat e select_views.bat) onde ambas
so ativadas assim que o banco encontra-se disponvel para conexo (STATUS = OPEN) e com
o LISTENER no ar. Essas sesses realizam SELECTs, em todas as tabelas, e vises do banco
de dados, incluindo tabelas do usurio TCC como mostra o comando configurado nos scripts:
a) TCC_TABLE.BAT:
@echo ON
sqlplus.exe -S system/ora10g @C:\select_dba_tables.sql
quit
b) TCC_VIEW.BAT:
@echo ON
sqlplus.exe -S system/ora10g @C:\select_dba_views.sql
quit
Nota-se que ambos os scripts apresentados, ao conectar-se no banco, chamam uma instruo em SQL. Essas instrues tm como contedo, SELECTs em todas as tabelas e views
existentes no banco de dados "ORA10G". Apresenta-se, a seguir, uma nica linha das milhares
existentes em cada instruo:
a) SELECT_DBA_TABLES.sql:
41
42
Com as conexes existentes no banco de dados, como mostra a Figura 18, tem-se como
objetivo, alcanar um cenrio o mais perto do real, ocasionando ao banco constantes atividades
de disco e conexes simultneas.
A Figura 19, mostra que, atravs dos SELECTs executados pelos scripts, ocasionou o
aumento das atividade no banco de dados, obtendo assim o resultado esperado.
Como nota-se na Figura 19, foi realizado apenas um ciclo com seis conexes simultneas,
onde foram obitidos os grficos atravs do OEM. No frame superior, apresenta o aumeto de
atividade de disco ocasionada por sesses de usurio. J no frame inferior direito, tem-se o
percetual de atividade por sesso, onde temos os seis principais consumidores (as seis seses
que aparecem no grfico, correspondem aos SELECTs realizados pelos scripts).
3.2
ro levados em considerao os parmetros de tempo e custo que sero obtidos nas consultas
propostas.
Esses parmetros sero resgatados, atravs das ferramentas citadas no captulo anterior,
junto gerao de traces.
Com o resgate dessas informaes, pode-se visualizar o custo, que um valor nico. No
custo, leva-se em conta utilizao do processador, de memria fsica e acesso a Disco (E/S).
Esse custo aponta a quantidade de recursos que foram utilizados para a realizao da consulta
no servidor.
O custo um valor que deve ser levado em considerao, pois em ambientes que essas
consultas so realizadas de forma constante por determinada sesso ou sesses distintas,
trabalhando em paralelo, que venham a apresentar um custo elevado, podem comprometer o
hardware.
J o parmetro tempo de execuo trata-se do tempo que a consulta SQL levar para ser
realizada, desde a solicitao at o momento em que resultado retornado ao solicitante.
uma varivel que se deve levar em considerao, pois trata-se de um fator relevante na comercializao de sistemas que utilizam esse tipo de processo (consulta a banco de dados),
onde leva-se em conta para aquisio do software por uma determinada empresa, o parmetro
desempenho.
No entanto, como no h uma valor pr-definido para o parmetro custo, para obter tal
preciso, deve-se levar em conta trs variveis, que sero descritas abaixo:
a) O nmero de registros: pode-se afirmar que quanto maior o nmero de registros obtidos
atravs de uma consulta, maior ser o custo.
43
b) A estrutura da consulta: levar em conta a forma que a consulta foi desenvolvida, principalmente quando se utiliza JOIN (processo que envolve mais de uma tabela em uma
nica consulta) e comando de organizao como o ORDER BY.
c) O ambiente: garantir que os testes sejam realizados em ambientes idnticos, como
servidores, rede e principalmente o nmero de conexes de usurios conectados ao
banco.
Levando em conta todos os itens acima, torna-se impossvel chegar a um custo que seja
ideal para todas as consultas, pois cada consulta SQL possui complexidades distintas uma das
outras.
Assim, ocorre a necessidade de realizar uma pesquisa antes do processo de TUNING para
obter-se embasamento. Foram realizadas consultas SQL com diferentes clusulas, e com os
resultados pde-se gerar uma tabela, conforme o Anexo B.
Dessa forma, ser possvel apresentar as melhorias realizadas nas consultas, por meio de
comparativos do requisito custo, junto aos resultados mensurados na pesquisa realizada antes
do processo de TUNING.
Pretende-se, dessa forma, obter uma melhor compreenso do estudo de caso, justificando
assim, a necessidade dessas melhorias.
3.2.1
As consultas sero realizadas em duas tabelas do usurio TCC, a HISTORICOS e a USUARIOS. Neste momento essas tabelas no possuem ndices e chaves primrias.
Atravs do comando "DESC", realizado em uma janela do SQL*Plus, como mostra a Figura 20, pode-se verificar o nome das tabelas e suas respectivas colunas, se so aceitveis
valores nulos e o tipo do campo (NUMBER, VARCHAR, DATE entre outros).
No primeiro momento, ser realizado um SELECT nas tabelas HISTORICOS e USUARIOS,
a fim de obter a quantidade de registros existentes em cada tabela, bem como o tempo e custo
da sua anlise completa.
A consulta realizada na tabela HISTORICOS, como mostra a Figura 21, foi realizada na
ferramenta PL/SQL Developer. J a consulta realizada na tabela USUARIOS, foi executada na
ferramenta Oracle SQL Developer, Figura 22, visando apresentar as funcionalidades e caractersticas das ferramentas que sero utilizadas.
44
45
Com as consultas j registradas, foi possvel constatar que a tabela HISTORICOS possui
2.882.880 registros e o tempo de resposta foi de 214,06 segundos, apresentando um custo de
6508. Na consulta da tabela USUARIOS, obteve-se o retorno de 96 registros, com um tempo
de 0,04 segundos e o custo para a realizao foi de 2.
Levando em conta que esse tipo de consulta realizada esporadicamente, normalmente em
pocas de fechamento, quando se costuma retirar relatrios, utilizando esses dados talvez para
realizar a montagem de grficos para uma melhor visualizao ou algo do gnero, ser, ento,
proposta uma consulta mais especfica, ocasionando assim uma idia do tempo de execuo
em uma aplicao que relizada com maior frequncia.
Nesse momento, tambm ser realizado um teste entre as ferramentas (PL/SQL Developer
X Oracle SQL Developer), tendo como objetivo que as ferramentas apresentem os resultados
idnticos na execuo da prxima consulta que ser proposta. Com isso, gera uma maior
confiabilidade nos resultados que so extrados dessas ferramentas.
Antes de analisar e relatar a consulta, vale a pena citar que o resultado do teste foi satisfatrio, pois ambas as ferramentas apresentaram o mesmo valor para o parmetro custo e
relataram o mesmo plano de acesso, sendo esse executado pelo Otimizador. Ver resultados
apresentados nas Figuras 23 e 24.
Utilizando a sintaxe, conforme mostra a Figura 23 realizada no PL/SQL Developer ou na
Figura 24 executada no Oracle SQL Developer, os registros retornados foram filtrados atravs
das determinadas colunas USUARIO E CAMPO da tabela HISTORICOS, onde todas as linhas
em que a coluna USUARIO forem igual "Adm" e CAMPO for igual a "Valor" sero listadas.
Nesse caso, a busca retornou 507 registros, levando 7,951 segundos e um custo de 6576.
46
47
Foi realizado um outro teste, tornando a consulta um pouco mais complexa, executando
o agora com as clusulas WHERE, AND e OR. Nesse momento, fica clara a dificuldade que
ocorre em gerar um valor de referncia para o parmetro custo, como foi citado anteriormente,
possui uma complexidade distinta entre as consultas.
Com essa consulta, conforme mostra a Figura 25, foram obtidos os registros que possuem
o dado "Adm" na coluna USUARIO, "Status" na coluna CAMPO e na coluna NOVOVALOR os
dados sejam igual a "Em Uso" e "Disponvel TI", totalizando 399 linhas, o custo obtido agora foi
de 6606 e levou 10,063 segundos para realizar a consulta.
Pode-se notar, ento, que com a alterao obteve-se um aumento no parmetro custo de
6576 da consulta anterior para 6606 para a consulta onde foi adicionado a clusula OR.
3.2.2
Explain
Os explains gerados acima auxiliam muito na identificao dos pontos mais crticos existentes em uma consulta, mostrando assim todo o plano de execuo da consulta, apresentando
o custo de cada acesso que realizado e tambm o custo total.
Porm, com a utilizao das ferramentas, como pode ser visualizado na Figura 25, torna-se
menos rduo o processo de gerao dessas informaes, levando em conta que as mesmas
poderiam ser geradas via intrues SQL como se pode ver abaixo:
48
Explained.
SQL> commit;
Commit complete.
Nesse primeiro passo, foi gerado o explain, que foi gravado na tabela PLAN_TABLE atravs
do comando COMMIT, recebendo o nome de "TCC01". Na sequncia, ser realizado um SELECT na tablela PLAN_TABLE, para visualizar as informaes obtidas com a consulta que foi
realizada com o comando anterior.
where statement_id=TCC01
order by position
OPERATION
TABLE ACCESS
SELECT STATEMENT
FULL
TCC
HISTORICOS
COST
6606
6606
Logo:
49
3.2.3
Traces
Quando se coloca uma sesso em modo trace, todas as atividades que nela forem realizadas, sero armazenados em um arquivo com exteno ".trc", como j abordado no captulo
2.
No entanto, antes de ativar a sesso para modo trace, preciso que se identifique o SID
(nmero de identificao do processo no Oracle) que essa sesso obteve ao acessar o banco
de dados. O SID pode ser visualizado atravs da ferrameta OEM como visto na Figura 18, ou
ento, por uma instruo SQL:
WHERE USERNAME=TCC
18
TCC
Com o SID j identificado, o trace pode ser iniciado com o seguinte comando:
NAME
user_dump_dest
string
C:\ORACLE\PRODUCT\10.2.0\ADMIN\ORA10G\UDUMP
O processo de trace pode ser parado com o comando que ser visto, a seguir, ou permanecer ativo at que essa sesso seja finalizada.
50
O relgio, esquerda da Figura 26, ativa o trace da sesso que foi selecionada, trazendo
uma caixa de dialogo com informaes da sesso, solicitando a confirmao. O mesmo processo ocorre com o relgio a direita que desativa o trace como mostra a Figura 27:
Contudo, esse arquivo ".trc" ainda se encontra em sua forma binria, impossibilitando a
leitura e compreenso do seu contedo. Para convert-lo em modo texto e o torn-lo assim
legvel, para que possa ser compreendido, usa-se um comando chamado TKPROF como se
pode ver a seguir.
3.2.4
TKPROF
51
a forma com que as informaes sero impressas no arquivo texto, modelando o documento,
para que atenda s necessidades do solicitante da melhor forma possvel.
Para converter o trace que foi gerado anteriormente, utilizou-se a seguinte sintaxe:
Desenvolvendo o comando, conforme pde ser visto na Figura 28, foi executado da seguinte
forma:
3.2.5
Anlise do trace
Com esse arquivo, pode-se realizar de forma mais detalhada a anlise da consulta. Abaixo
foi resgatado um pequeno trecho do arquivo TCC_01.TXT, mais precisamente o momento em
que foi realizado a consulta.
a) Consulta:
52
call
Parse
Execute
Fetch
total
0.00
0.00
1.15
1.15
0.01
0.00
10.59
10.61
0
0
29242
29242
0
0
29249
29249
0
0
0
0
rows
0
0
399
399
Onde:
53
tabelas do usurio TCC, no possuam estatsticas. Para o mesmo, sero rodados os comandos
vistos no captulo 2, sendo eles:
Na Figura 29, tem-se o comando realizado para remover a estatstica das duas tabelas.
Ao executar uma consulta na DBA_TABLES, a fim de visualizar a coluna LAST_ANALYZED,
ser realizado o comando a seguir, onde, os resultados estaram presentes na Tabela 6, visualizandose que as estatsticas foram removidas, iniciando assim o processo de otimizao.
3.2.6
HISTORICOS
USUARIOS
Com a identificao do problema, constatado com o auxlio das ferrametas que foram utilizadas no decorrer dos testes, uma nova consulta mais complexa foi desenvolvida para a realizao
dos novos testes:
54
Com a realizao da consulta acima, foram obtidos os seguintes valores presentes na Tabela 7. A consulta teve os registros contidos dentro das clusulas do primeiro SELECT restrita
s clusulas do segundo.
Tabela 7: Resultados Consulta_1 (sem ndices)
Registros recuperados
399
Tempo decorrido
12,421 seg.
Custo total da consulta
6609
Com esses resultados obtidos, comparados com a consulta realizada na Figura 21, obtevese um custo maior, porm foi executada em um tempo bastante inferior. A variao ocorre, pois
o custo tende a aumentar conforme a complexidade da consulta. J o tempo, nesse caso,
menor porque o nmero de registros resgatados na consulta da Figura 21 foi muito maior.
Nesse momento, as tabelas HISTORICOS e USUARIOS no possuem ndices, requerendo
que o sistema efetue uma leitura de toda a tabela sequencialmente, para vir a encontrar os
dados solicitados.
Para iniciar o processo otimizao dessa consulta, foi criado um ndice para os campos da
tabela HISTORICOS que so utilizados na consulta proposta para os teste:
55
Com a criao do ndice, nota-se que ocorreu o resgate dos registros, utilizando menos
recursos, detalhes que poderam ser visualizados na Tabela 8.
Tabela 8: Resultados Consulta_1 (com um ndice)
Registros recuperados
399
Tempo decorrido
7,375 seg.
Custo total da consulta
7
A consulta, que foi proposta, utiliza tambm as colunas NOMECOMPLETO e DEPARTAMENTO da tabela USUARIOS. Visando ainda um melhor desempenho, ser construdo o seguinte ndice:
56
Tambm foi gerado um trace da sesso que estava sendo realizada a consulta. Aps a
converso do mesmo para o modo texto, tm-se, de forma mais detalhada, os custos que a
consulta apresentou conforme Tabela 9.
Como era esperado, com a criao do ndice IX_USUARIOS_1 para a tabela USUARIOS,
obteve-se um melhor desempenho, demonstrado na Tabela 10.
57
call
Parse
Execute
Fetch
total
1
1
4
6
0.00
0.00
0.03
0.03
0.01
0.00
0.01
0.02
0
0
1989
1989
0
0
1994
1994
0
0
0
0
rows
0
0
399
399
58
Aps a criao das tabelas e os respectivos ndices, tambm foi atualizada a estatstica das
tabelas, utilizando as seguintes sintaxes:
Como se pode ver na Figura 34, o custo da mesma consulta, porm com as tabelas vazias,
foi de "0", tornando visvel que o custo mais elevado apresentado na Figura 32 ocasionado
pelo alto nmero de registros armazenados na tabela HISTORICOS.
Sendo essa a primeira consulta a ser analisada e com a otimizao j efetuada, possvel
elaborar grficos com os resultados contidos na Tabela 11 e assim obter uma melhor visualizao dos resultados obtidos como mostram as Figuras 35 e 36.
Tabela 11: Consulta_1 (Comparativo)
Consulta_1
Tempo (segundos) Custo
Sem ndice
Com um ndice
Com dois ndices
12,421
7,375
1,017
6609
7
5
59
3.2.7
Outra forma, muito mais prtica para a otimizao de uma consulta, encontra-se no OEM,
onde realizado, um processo de anlise da consulta pela prpria ferramenta, retornando os
ganhos que sero obtidos com a criao do ndice sugerido, alcanando assim as expectativas
do administrador, a prpria ferramenta realiza a criao do ndice. Esse processo que ser
realizado a seguir.
Neste momento, a tabela HISTORICOS no possui ndices. Sendo assim, ser otimizada a
consulta vista anteriormente na Figura 25.
No OEM, na aba Performance Top Activity, visualizam-se as atividades das sesses no
banco de dados, como pde-se visualizar na Figura 19. Ao realizar-se a consulta proposta,
obteve-se o seguinte resultado, nos dois frames inferiores do OEM, como mostra a Figura 37.
No primeiro frame, tem-se a coluna SQL ID. Cada consulta SQL possui seu prprio ID, que
so valores distintos para cada consulta existente no banco de dados. O ID que se encontra
destacado na figura abaixo, direciona para uma outra janela do OEM.
60
Com essa janela, resgatam-se algumas informaes da consulta SQL que est sendo realizada, como mostra a Figura 38. O campo Text traz a consulta que est sendo realizada pela
sesso selecionada, j no campo Details, na aba Plan, pode-se visualizar o plano de execuo que est sendo realizado, mostrando que todos os registros da tabelas esto sendo lidos,
ocasionando um alto custo para a realizao dessa consulta.
61
So retornadas informaes do tipo de objeto que est sendo sugerido para criao, as
colunas que devem conter no ndice e informaes identificando que com a criao do ndice
ocorrer uma melhora significativa no desempenho. Na coluna New Explain Plan, pode-se
visualizar o explain da consulta com a criao do ndice e o explain da consulta original, para
visualizao dos ganhos obtidos, resultados que so visualizados de forma organizada em uma
outra janela, conforme mostra a Figura 40.
Na Figura 40, foram selecionados os resultados dos custos obtidos, mostrando que com a
cria-o do ndice proposto haver realmente uma melhora significativa no desepenho dessa
consulta.
Outro fator importante que o processo de criao do ndice pelo OEM pode ser programado para um determinado horrio, pois, trata-se de um processo de alto custo para o servidor,
se tornando muito mais crtico se for uma tabela que possua muitos registros e com acessos
constantes, podendo assim ocasionar uma perda de desempenho do banco de dados ou at
uma parada do mesmo.
Isso ocorre porque, no momento de criao de um ndice, a tabela bloqueada pelo processo, impossibilitando a consulta e a alterao da mesma, portanto todos as sesses que
venham a realizar alguma atividade nessa tabela, ficaram locadas at o trmino da criao do
ndice, que em alguns casos podem levar horas.
Com a possibilidade de se programar que a tarefa venha ser realizar em um determinado
horrio, o administrador pode efetuar a configurao, onde a mesma dar incio automaticamente aps o horrio de maior utizao do sistema. Esse processo de configurao pode ser
visualizado na Figura 41.
Para configurao da tarefa, algumas informaes so necessrias, como o nome da tarefa,
a data e o horrio de incio do processo. Porm, para esse estudo de caso, o processo de
criao foi programado para ser inicializado no modo imediato.
62
Aps a confirmao da ferramenta que o ndice foi criado, foi executado um SELECT na
DBA_INDEXES, confirmando a criao e possibilitando visualizar algums parmetros do ndice
como mostra a Tabela 12:
INDEX_NAME NOME_INDICE,
TABLE_NAME NOME_TABELA,
STATUS
FROM DBA_INDEXES
IDX$$_01280001
HISTORICOS
VALID
Abaixo sero apresentados tambm dois grficos demonstrando os ganhos obtidos no parmetro tempo e custo, conforme mostram as as Figuras 42 e 43 geradas com os resultados da
Tabela 13.
63
10,063
1,406
6602
5
64
sejam removidas as estatsticas do banco de dados para que apresentem um melhor desempenho, no entanto se esses sistemas possuem uma base prpria no apresentaram maiores
problemas, caso contrrio, poderam ocasionar srios problemas de desempenho nas demais
aplicaes que utilizam o mesmo banco de dados como repositrio, realizando suas consultas
de forma no otimizada.
Nesses casos, tem-se a alternativa de executar as consultas com problema de desempenho, sugerindo o ndice ou ndices que a consulta deve utilizar para obter-se um melhor
desempenho. Essas sugestes, chamadas de Hints, sero abordadas a seguir.
3.2.8
Para realizao desse teste ser utilizada a clusula MINUS, como mostra a Figura 44:
Neste caso os registros que se encontram em "A", sero os dados retornados pela consulta
a seguir:
SELECT t.usuario,t.CAMPO,t.novovalor,t.id_objeto
FROM HISTORICOS t, usuarios u
WHERE t.usuario = u.nomecompleto
and t.campo = Status
and (t.novovalor = Em Uso or t.novovalor = Disponvel TI)
and (u.nomecompleto = Adm or t.usuario = Adm)
minus
(
select usuario,campo,novovalor,id_objeto
from historicos
where atualizadoem <> to_date(3/22/2006 9:39:54, MM/DD/YYYY HH:MI:SS)
)
65
Fazem parte dessa consulta as tabelas HISTORICOS e USUARIOS, que possuem os seguintes ndices, conforme mostra a Tabela 14.
Tabela 14: ndices das tabelas HISTORICOS e USUARIOS
Tabela
Nome do ndice
Colunas refernciadas
HISTORICOS
HISTORICOS
HISTORICOS
USUARIOS
IX_HISTORICOS
IX_HISTORICOS_2
IX_HISTORICOS_3
IX_USUARIOS
USUARIO | OBJETO
NOVOVALOR |CAMPO | USUARIO
ID |ATUALIZADOEM
NOMECOMPLETO
Portanto, como a consulta ser otimizada com a utilizao de hint as estatsticas foram
deletadas. Nesse momento as informaoes utilizadas para a escolha do caminho que apresenta
o menor custo, realizada pelo Otimizador, foram removidas.
Logo aps a remoo das estatsticas das tabelas, realizou-se um explain da consulta como
mostra a Figura 45.
Como mostra o explain, mesmo sem haver estatsticas, o Otimizador utilizou um dos ndices,
apresentando um custo inferior a consulta realizada na pesquisa para obter valores comparativos, como mostra o Anexo C, que foram executadas sem os ndices.
No entanto, o custo ainda encontra-se alto, pois o ndice utilizado foi aplicado somente
para o primeiro SELECT da consulta, sendo assim, o segundo realizou a leitura de toda a
tabela. Visando melhorar o custo, foi sugerido ao Otimizador que fosse utilizado o ndice
66
Como a consulta apresentou um custo menor que o sugerido pelo Otimizador, foi empregado o ndice sem nenhum problema. Na Tabela 15, tem-se o ganho obtido com a sugesto
que foi proposta.
Tabela 15: Consulta_3 (Comparativo)
Consulta_3
Tempo (segundos) Custo
Sem sugesto
Com sugesto
13,61
12,221
3733
2281
Tambm foram montados os grficos de tempo e custo, para uma melhor visualizao dos
ganhos obtidos como mostram as Figuras 47 e 48.
67
68
3.3
RESULTADOS OBTIDOS
Com os resultados obtidos com as melhorias realizadas, que tiveram seus resultados re-
presentados nos grficos, apresentaram resultados eficazes, melhorando assim, consideravelmente o item desempenho.
Mesmo se tratando de consultas no to complexas e de tratamento fceis, pode-se notar
o quo importante o desenvolvimento de consultas de forma otimizada.
Porm deve-se levar em conta, que todos os processos de otimizao, foram realizados em
cima de comandos SQL para consultas (SELECT ), no sendo utilizado comparaes ou testes
com demais comandos de manipulao de dados como INSERT,UPDATE e DELETE.
Todos os mtodos de otimizao aplicados, foram baseados em autores conhecidos e documentaes disponibilizadas pela prpria Oracle. Quanto a aplicao das ferramentas, so
encontrados em tutoriais dos prprios fabricantes, artigos e revistas especializadas em banco
de dados.
Nas Tabelas 16 e 17, traz os resultados comparativos de todas as consultas realizadas
nesse documento.
SQL
Consulta_1
Consulta_2
Consulta_3
12,421
10,063
13,61
1,017
1,406
12,221
6609
6602
3733
5
5
2281
Por fim, nota-se, ento, que em todas as consultas realizadas nesse estudo obteve-se ganho nas variveis custo e tempo, com valores significativos principalmente na Consulta_1 e
Consulta_2, com isso, no ocorre o uso desnecessrio de recursos do servidor e os dados so
resgatados do banco de forma muito mais rpida.
69
CONCLUSO
sabido que as informaes geradas pelos sistemas informatizados, quase que na sua
totalidade, so armazendas em bancos de dado e que a manipulao dessas informaes so
realizadas pela linguagem SQL. Sabe-se tambm que o Otimizador o responsvel em realizar
as consultas de forma otimizada, caso no ocorra, ocasionar uma lentido do sistema como
um todo, ou em determinados processos, dependendo da situao.
A busca do desempenho adequado o objetivo da otimizao das consultas. Com a aplicao de tcnicas de tuning, pode-se melhorar todo os processos que possam inviabilizar o uso de
um determinado sistema. O processo de otimizao deve ser realizado principalmente na fase
de anlise do projeto, evitando assim maiores problemas no desenvolvimento e na utilizao do
sistema.
Por meio do estudo destas ferramentas, foi possvel demonstrar o quanto so importantes
para o auxlio da identificao das consultas com problemas, trazendo informaes de todo o
plano de execuo e seus respectivos custos, tornando muito mais prtico o acerto das consultas e principalmente o ganho de tempo que essas ferramentas proporcionam, pois trazem
muitos recursos j pr-configurados.
J com a abodagem das tcnicas de otimizao, demonstrou-se que problemas relacionados a desempenho podem ser melhorados com a criao de ndices, com o uso desses ndices
pelo Otimizador e utilizao das sugestes (Hints) com o intuito de auxiliar o Otimizador na
construo do melhor caminho para a execuo das consultas.
O material utilizado para o desenvolvimento deste documento teve, como base, bibliografia
de livros, artigos, apostilas, tutoriais e documentaes sobre conceitos e otimizaes do prprio
banco de dados fornecidas pelo fabricante do software.
importante salientar as dificuladades encontradas durante o desenvolvimento deste documento, como a preocupao com o detalhamento dos exemplos para uma melhor compreenso
e com a falta de bibliografia mais tcnica sobre otimizao utilizando ferramentas.
Para um trabalho futuro, sugere-se um estudo sobre otimizao em bancos de dados distribudos ou em outros sistemas gerenciadores de banco de dados, talvez utilizando os resultados
obtidos nesta pesquisa para comparaes. Outra sugesto a utilizao de outros mtodos
para melhorar o desempenho das consultas.
70
REFERNCIAS
AUTOMATIONS, A. PL/SQL Developer. 2008. Disponvel em: <http://tinyurl.com/63ebd4>.
Acesso em: 02 de jul. de 2008.
CARATTI, R. L. Monitorao de sistemas de banco de dados. SQL Magazine, 2007.
CERCOLA, V. O. Oracle Banco de Dados Relacional e Distribudo. So Paulo: Makron Books,
1995.
COUCHMAN, J. S. Oracle Certified Professional. DBA Certification Example Guide. Berkeley:
McGraw-Hill Companies, 1998.
DATE, A. C. Introduo a Sistemas de Banco de Dados. Rio de Janeiro: Elsevier, 2006.
DBA-2, A. DBA-2. Joinville: Aporte, 2003.
FERNANDES, L. Oracle 9i Para Desenvolvedores Curso Completo. Rio de Janeiro: Axcel
Books, 2002.
FOGEL, S.; STERN, J. Oracle Database 2 Day DBA. 2008. Disponvel em: <http://tinyurl.com/6x2av2>. Acesso em: 06 de set. de 2008.
GONALVES, E. Tuning de SQL: Uma Abordagem para banco de dados Oracle. Dissertao
(Trabalho de Diplomao) Unio de Tecnologia e Escolas de Santa Catarina, Joinville, 2004.
GREEN, C. D. Performance Tuning Guide and Reference. 2002. Disponvel em: <http://tinyurl.com/6cu38o>. Acesso em: 02 de out. de 2008.
GREGOIRE, J.; LORENTZ, D. Database SQL Reference. 2003. Disponvel em: <http://tinyurl.com/6a76g6>. Acesso em: 05 de ago. de 2008.
LIBRARY, O. D. D. Oracle Database SQL Developer Users Guide. 2008. Disponvel em:
<http://tinyurl.com/6cm3w8>. Acesso em: 07 de set. de 2008.
LIMA, A. da S. Erwin 4.0 Modelagem de Dados. 2. ed. So Paulo: rica, 2002.
LONEY kevin. Oracle 9i: O Manual do DBA. Rio de Janeiro: Campus, 2002.
LORENTZ, D. Database SQL Language Reference. 2007. Disponvel em: <http://tinyurl.com/6dw6o2>. Acesso em: 05 de ago. de 2008.
MAYER, R. C. Otimizando a Performance de Bancos de Dados Relacionais. Rio de Janeiro:
Axel, 2001.
MOLINARI, L. BTO Otimizao da Tecnologia de Negcio. So Paulo: rica, 2003.
NIEMIEC, R. J. Oracle 9i Performance Tuning: Dicas e Tcnicas. Rio de Janeiro: Campus,
2003.
ORACLE9I. Online Generic Documentation. Realise 1 (9.0.1): Oracle Corporation, 2001.
RAMOS, E. Otimizao de comandos sql. SQL Magazine, 2003.
71
72
ANEXOS
73
74
Clusulas
12,421
10,063
14,063
6609
6606
5249
Registros
399
399
1
75
76