Escolar Documentos
Profissional Documentos
Cultura Documentos
ANÁLISE DE DESEMPENHO DO
BANCO DE DADOS ORACLE 9i
Reitor:
Pastor Ruben Eugen Becker
Vice-Reitor:
Eng. Leandro Eugênio Becker
Diretor da Faculdade de Informática:
Prof. Gilberto Fernandes Marchioro
Coordenador de Curso (Câmpus Canoas):
Prof. Gilberto Fernandes Marchioro
Coordenador das Disciplinas de Trabalho de Conclusão de Curso (Câmpus Canoas):
Prof. Denise Salvadori Virti
Endereço:
Universidade Luterana do Brasil – Câmpus Canoas
Av. Miguel Tostes, 101 – Bairro São Luís
CEP 92420-280 Canoas-RS – Brasil
3
Este estudo tem por objetivo primordial demonstrar a importância dos parâmetros
sobre o conjunto de consultas e atualizações, utilizando como teste uma base de dados no
Oracle 9i. Os parâmetros são de extrema importância, pois determinam, entre outros fatores, o
desempenho do banco de dados. O Oracle 9i é um SGBD que se destaca no mercado por ser
robusto e muito eficaz. Na primeira etapa, foram identificados os parâmetros a serem
estudados através de testes de desempenho. Neste estudo, a primeira etapa contém uma visão
geral do banco de dados Oracle 9i, assim como a identificação dos parâmetros que envolvem
concorrência, desempenho e recuperação de dados. Na segunda etapa, são demonstradas as
ferramentas que foram utilizadas para medir e avaliar o desempenho do banco de dados. É
apresentado o sistema de avaliação, os parâmetros que foram analisados, assim como os
softwares que realizam esta análise. Finalmente, é feita uma análise dos resultados obtidos.
Por fim, são apresentadas as conclusões.
This study has as main goal demonstrate the importance of the parameters on the
Database Management System Oracle 9i. The parameters has extreme importance, because
determine, between other factors, the database performance. Oracle 9i is a SGBD that the
market considers robust and very efficient. On the first stage, is defined the parameters to be
studied through performance tests. In this study, the first step contains a description of Oracle
9i, as well as the parameters identification that involves concorrency control, performance
and recovery. On second step are demonstrated the tools that are used to measure and
evaluate the database performance. It’s presented the evaluation system, the analyzed
parameters, as well as the software that realized this analysis.
1
TPC BENCHMARK™ C. Standard Specification, Rev.5.0 , fev. 2001. Disponível em : <http://www.tpc.org> Acesso em:
5 jun. 2002.
12
Por fim, são apresentadas as conclusões deste estudo e algumas sugestões de futuros
trabalhos.
2 ORACLE 9i
Este capítulo tem como objetivo explicar os parâmetros do Oracle relacionados a
controle de desempenho, concorrência e recuperação de dados. Há outros subconjuntos de
parâmetros não abordados neste trabalho. Uma descrição completa pode ser encontrada no
manual de referencia2 da Oracle
2.1 PARÂMETROS
O Oracle possui aproximadamente 250 parâmetros que configuram o sistema. O
Administrador da Base de Dados (DBA), é responsável por fazer com que o banco de dados
obtenha o máximo em desempenho, através da modificação dos valores de cada parâmetro.
Alguns deles exigem a reinicialização do banco de dados, enquanto para outros, isto não se
faz necessário. Um dos motivos pelo qual o Oracle tornou-se um poderoso e complexo
SGBD, é o fato de possuir a habilidade de mudar dinamicamente sua configuração em tempo
de execução.
Existem três tipos gerais de parâmetros, que são caracterizados de acordo com o tipo
de interrupções necessárias para mudar seu valor: (Lemke3)
• Parâmetros Estáticos: É um pequeno subconjunto de parâmetros que não pode
ser modificado sem que a base de dados seja completamente reinicializado. Um
exemplo deste tipo de parâmetro é o DB_BLOCK_SIZE. O tamanho do bloco da
base de dados é estático, pois as tabelas e os índices não podem ser movidos com
diferentes tamanhos de blocos. Sua alteração exige uma recriação completa da
base de dados;
2
ORACLE CORPORATION. Oracle9i Database Reference. Release 2 (9.2). Redwood Shores:Oracle Press, 2002.
3
LEMKE, Vilson Z. Análise Comparativa dos Parâmetros Envolvidos no Ajuste de Desempenho dos Bancos de Dados
Oracle9i e Interbase 6.5. Gravataí:ULBRA, 2002. (Trabalho de Conclusão de Curso).
14
Estes parâmetros atuam em duas diferentes áreas: parâmetros do System Global Area
(SGA) e parâmetros de processo.
2.1.1 Desempenho
A arquitetura de processamento de um SQL possui os seguintes componentes
principais:
• Parser: Um parser possui duas funções: análise sintática, que verifica a sintaxe da
sentença SQL. Como exemplo, uma consulta SQL poderia estar referenciando
uma coluna inexistente em uma tabela; e análise semântica, que verifica, por
exemplo, se o objeto do banco atual e os atributos referenciados pelo objeto estão
corretos;
• Otimizador: O otimizador utiliza regras internas ou métodos de custo para
determinar a maneira mais eficiente de produzir resultados em uma consulta. O
Oracle fornece dois métodos de otimização: baseado em custo (CBO – Cost-
Based Optimizer) e baseado em regras (RBO – Rule-Based Optimizer)4
• Gerador de Linha: Recebe o melhor plano que foi gerado pelo otimizador e gera
a saída para a sentença SQL. A execução do plano é uma coleção de linhas
4
LEMKE, Vilson Z. Análise Comparativa dos Parâmetros Envolvidos no Ajuste de Desempenho dos Bancos de Dados
Oracle9i e Interbase 6.5. Gravataí:ULBRA, 2002. (Trabalho de Conclusão de Curso).
15
2.1.2 Concorrência
Uma das principais preocupações de um SGBD multiusuário é como controlar a
concorrência, ou seja, o acesso simultâneo do mesmo dado por muitos usuários. Sem o devido
controle de concorrência, os dados podem ser atualizados ou modificados de maneira
imprópria. Uma maneira de controlar concorrência pode estabelecer que caso muitos usuários
estejam acessando o mesmo dado, cada usuário deve esperar por um curto período de tempo.
Uma transação impede que seja executado o comando insert em uma tabela cuja onde
esteja sendo executada outra transação. Quando uma transação começa, os dados que serão
alterados são copiados para outros segmentos de memória, antes que seja completada a
transação. Assim, se um usuário solicitar uma pesquisa antes da transação ter sido finalizada,
os dados são lidos destes segmentos. A Figura 1 representa o conceito de transações,
demonstrando como o banco faz a consistencia de leitura e atualização de dados.
17
Para prevenir uma interação destrutiva entre usuários acessando dados concorrentes,
são usados bloqueios (locks), que travam os dados da tabela ao nível de linha.
5
ORACLE CORPORATION. Oracle9i Database Concepts. Release 2 (9.2). Redwood Shores:Oracle Press, 2002.
18
• Falha de sintaxe: Ocorre quando, por exemplo, é detectado algum erro de sintaxe
ou semântica em um comando SQL
6
ORACLE CORPORATION. Oracle9i Backup and Recovery Concepts. Release 2 (9.2). Redwood Shores:Oracle Press,
2002.
19
• Falha de Processo: É quando ocorre uma falha no processo do usuário, uma falha
no servidor ou no processo interno do BD. Então, esta falha termina de forma
anormal ou é desconectada.
Trata-se de uma cópia dos dados originais contendo partes importantes do banco de
dados como, por exemplo, o arquivo de controle e o arquivo de dados. Caso os dados
originais sejam perdidos ou apagados, o BD pode recuperá-los através da cópia de segurança.
As cópias de segurança são divididas em:
• Físicas: São copias físicas dos arquivos de dados.
O SCN (System Change Number), é uma estampa que define uma confirmação de
gravação em um dado período de tempo. O Oracle atribui para cada transação efetuada, um
único SCN.
• Na janela da direita, no pé da página tem um botão que torna visível todos os parâmetros
de inicialização do Oracle, como mostra a Figura 3.
22
• Basta clicar sobre o item que deseja alterar e clicar no botão “Aplicar” para o parâmetro
ser alterado. Em seguida, uma mensagem do BD informará que os parâmetros foram
alterados.
3 FERRAMENTAS
A Oracle desenvolveu uma vasta ramificação de aplicativos específicos para avaliação
de desempenho. Entre estes aplicativos estão o EXPLAIN PLAN e o TKPROF, que foram os
dois aplicativos escolhidos para a avaliação de desempenho do banco de dados neste trabalho.
Neste capítulo, são descritas as ferramentas utilizadas para avaliar o desempenho do banco de
dados Oracle quando este é submetido a uma carga elevada de dados concorrendo entre vários
processos de usuários.
O EXPLAIN PLAN mostra a execução das sentenças SQL, onde o otimizador Oracle
faz uma escolha para a seleção e atualização dos dados do banco de dados. É a seqüência de
operações necessárias executadas pelo otimizador para realizar uma consulta. Quando
executado, seus dados que descrevem o plano, são armazenados em uma tabela na base de
dados. Seus resultados ajudam a entender as decisões tomadas pelo otimizador e explicar o
desempenho de uma consulta. O uso isolado do EXPLAIN PLAN não é totalmente eficiente,
sendo necessário o uso de uma outra ferramenta para que se possa analisar a real situação do
problema. Uma ferramenta muito utilizada é o Trace, que rastreia, com detalhes, valores de
desempenho do SGBD.
Antes de usar o EXPLAIN PLAN, é necessário criar uma tabela onde serão
armazenados seus dados de saída.
PLAN_TABLE. Nesta tabela, o EXPLAIN PLAN irá inserir as linhas que descrevem a
execução do plano.
<Comando SQL>
<comando SQL>
<comando SQL>
O banco Oracle também mantém dois arquivos SQL para mostrar a saída mais recente
da tabela PLAN_TABLE. O Arquivo UTLXPLS.SQL mostra a saída da tabela para
processamento serial, enquanto o arquivo UTLXPLP.SQL mostra a saída da tabela para
colunas paralelas. O Quadro 4, descreve as colunas da tabela PLAN_TABLE
3.2 TRACE
Para um melhor monitoramento de aplicações rodando em servidores Oracle, foram
desenvolvidas algumas ferramentas para diagnóstico de desempenho: SQL TRACE e
TKPROF. Para um melhor desempenho, usa-se estas ferramentas em conjunto com o
EXPLAIN PLAN. A seguir, será detalhado o funcionamento de cada uma destas ferramentas.
26
É importante salientar que o SQL TRACE gera uma sobrecarga no SGBD, sendo
imprescindível desabilitá-lo ao término das operações que se deseja monitorar. Para
desabilitar, basta digitar:
Cada vez que um usuário conecta-se BD Oracle com o parâmetro SQL_TRACE ativo,
é gerado um arquivo de trace, onde os dados estarão constantemente sendo monitorados e
agrupados até que o usuário se desconecte do banco. Ao se conectar novamente, um novo
arquivo é gerado.
De posse deste arquivo, é possível utilizar a ferramenta de TKPROF para que se possa
analisar o plano de execução do banco de dados para as consultas ou atualizações que foram
feitas.
Exemplo de Uso:
No exemplo acima:
• tcc_ora_2546.trc é o arquivo trace contendo o resultado da avaliação;
• INSERT cria um script SQL que grava as estatísticas do arquivo trace na base de
dados;
• SYS=NO significa que não serão listadas as sentenças SQL do usuário SYS;
O TKPROF lista estatísticas para sentenças SQL retornadas pelo SQL TRACE em
colunas e linhas. Cada linha corresponde a um dos três passos processados:
28
• FETCH: Recupera as colunas executadas por uma query. Fetch são executados
somente em sentenças SQL.
Estatísticas sobre linhas processadas aparecem na coluna ROWS. Este número total
não inclui linhas processadas por subqueries. A tabela 1 representa um exemplo de uma
análise realizada pelo Tkprof.
O exemplo acima indica que a sentença foi analisada 57 vezes, levando 7,01 segundos
de tempo total com 100 blocos de dados lidos fisicamente, sendo que 8 blocos de dados foram
29
recuperados do buffer no modo atual e 826 linhas foram processadas, lembrando que as linhas
das subconsultas envolvidas não são contadas.
7
Figura obtida atravéz de uma tela do ORACLE PERFORMANCE MANAGER
4 SISTEMA DE AVALIAÇÃO
Este capítulo demonstra algumas técnicas utilizadas na avaliação de desempenho do
BD Oracle 9i. Também são apresentados os parâmetros observados na análise de
desempenho, assim como os softwares que realizaram esta análise.
O modelo escolhido foi o TPC-C, pois é o que melhor se adapta ao plano de testes que
é baseado em um sistema cliente-servidor.
8
TPC BENCHMARK™ C. Standard Specification, Rev.5.0 , fev. 2001. Disponível em : <http://www.tpc.org> Acesso em:
5 jun. 2002.
32
Os clientes ligam para a empresa para fazer novos pedidos ou saber a situação de seus
pedidos existentes. Cada pedido tem uma média de dez itens. Um por cento dos pedidos são
para itens não-estocados e precisam ser repostos por outro depósito. O sistema da empresa
também é usado para receber pagamento de clientes, processar ordens para compras, e
examinar os níveis de estoque para identificar depósitos que possam suprir os demais. Os
componentes do BD consistem em nove tabelas individuais separadas. O relacionamento
entre estas tabelas estão definidas no diagrama ER mostrado na figura 6, e estão sujeitas as
regras especificadas na cláusula 1.4 de TPC(2002).
Software Lançador:
O lançador chama o TCC, passando o nome do arquivo texto cujo parâmetro deve ser
alterado e a quantidade de conjuntos que este deve executar. Quando termina, o TCC salva os
resultados dos tempos de execução e passa o controle para o lançador, que irá encerrar sua
execução.
Software TCC:
Uma variável do tipo inteiro, que controla o número de threads que estão rodando, é
definida inicialmente como dez. Outras duas variáveis também são definidas. A variável
Selects, que controla o numero de seleções, é definida como 10. A variável Updates, recebe o
36
Configuração:
DATABASE NAME=
USER NAME=marin
ODBC DSN=Teste1
OPEN MODE=READ/WRITE
SCHEMA CACHE SIZE=8
SQLQRYMODE=
LANGDRIVER=
SQLPASSTHRU MODE=SHARED AUTOCOMMIT
SCHEMA CACHE TIME=-1
MAX ROWS=-1
BATCH COUNT=200
DB_BLOCK_BUFFERS=50
DB_CACHE_SIZE=25165824
DB_FILE_MULTIBLOCK_READ_COUNT=16
GLOBAL_CONTEXT_POOL_SIZE=1
LOCK_SGA=FALSE
LOG_CHECKPOINT_TIMEOUT=1500
OPTIMIZER_INDEX_CACHING=0
OPTIMIZER_INDEX_COST_ADJ=100
OPTIMIZER_MAX_PERMUTATIONS=2000
OPTIMIZER_MODE=CHOOSE
PRE_PAGE_SGA=FALSE
QUERY_REWRITE_ENABLED=FALSE
QUERY_REWRITE_INTEGRITY=ENFORCED
ROW_LOCKING=ALWAYS
SGA_MAX_SIZE=135338868
SORT_AREA_SIZE=524288
ENABLE SCHEMA CACHE=FALSE
SCHEMA CACHE DIR=
BLOB SIZE=32
ENABLE BCD=FALSE
ROWSET SIZE=20
BLOBS TO CACHE=64
PASSWORD=marin
Figura 10 – Configuração do parâmetro LOG_CHECKPOINT_TIMEOUT
Tabelas são
numeradas
No quadro 7, todos parâmetros com as respectivas alternativas de valor, utilizados
neste trabalho, estão descritas. Esta relação atende a sugestão da Oracle sobre os principais
38
parâmetros que podem afetar o desempenho do SGBD9. O valor padrão está destacado em
Providencia o
negrito. negrito. Sempre do menor para o
maior valor.
9
ORACLE CORPORATION. Oracle9i Database Reference. Release 2 (9.2). Redwood Shores:Oracle Press, 2002.
39
softwares de análise, como SPSS, ou para uma base de dados Oracle, de maneira simples. Na
figura 13 é apresentado o arquivo de resultados, obtidos para cada proporção.
50;25165824;16;1;FALSE;1800;0;100;2000;CHOOSE;FALSE;FALSE;ENFORCED;ALWA…
50;25165824;16;1;FALSE;1800;0;100;2000;CHOOSE;FALSE;FALSE;ENFORCED;ALWA…
50;25165824;16;1;FALSE;1800;0;100;2000;CHOOSE;FALSE;FALSE;ENFORCED;ALWA…
50;25165824;16;1;FALSE;1800;0;100;2000;CHOOSE;FALSE;FALSE;ENFORCED;ALWA…
150;25165824;16;1;FALSE;1800;0;100;2000;CHOOSE;FALSE;FALSE;ENFORCED;ALW…
150;25165824;16;1;FALSE;1800;0;100;2000;CHOOSE;FALSE;FALSE;ENFORCED;ALW…
150;25165824;16;1;FALSE;1800;0;100;2000;CHOOSE;FALSE;FALSE;ENFORCED;ALW…
150;25165824;16;1;FALSE;1800;0;100;2000;CHOOSE;FALSE;FALSE;ENFORCED;ALW…
150;25165824;16;1;FALSE;1800;0;100;2000;CHOOSE;FALSE;FALSE;ENFORCED;ALW…
150;25165824;16;1;FALSE;1800;0;100;2000;CHOOSE;FALSE;FALSE;ENFORCED;ALW…
150;25165824;16;1;FALSE;1800;0;100;2000;CHOOSE;FALSE;FALSE;ENFORCED;ALW…
. . .
Figura 13 – Arquivo Resultado.txt
4.3 CONSULTAS
Esta sessão trata especificamente das consultas que serão geradas pelas threads,
baseando-se no modelo de TPC discutido na sessão 4.1.
• Consulta com Agregação: Consulta os dados, agrupando o resultado por algum critério.
41
Ex.: Procurar a quantidade de clientes e o preco para cada um, onde o nome do
cliente seja algo como A100.
• Consulta com Junção Múltipla: União dos dados de duas ou mais tabelas
Ex.: Selecionar os itens em estoque em cada depósito
4.4 ALTERAÇÕES
Esta sessão, trata especificamente das alterações que serão geradas pelas threads,
também baseadas no modelo de TPC da sessão 4.1
• Atualização com junção: Podem alterar dados de uma tabela, dependendo de uma
condição envolvendo outra tabela
Ex.: Aumentar uma quantidade no estoque para cada item estocado cujo preço
seja maior que 250
42
A proporção entre seleções e atualizações foi configurada para variar de 10% em 10%,
isto é, a configuração inicial é de 100% de seleções, após 90% de seleções e 10% de
atualizações, e assim sucessivamente, até chegar a 100% de atualizações. Cada 10%
representa uma thread no sistema. A tabela 2 apresenta a proporção de processos concorrentes
em execução.
Embora o parâmetro SQL_TRACE não tenha sido mencionado, e seu valor padrão
seja FALSE, é importante que ele esteja sempre acionado (TRUE) para que monitorar o
desempenho do banco. Por este motivo, não foi mencionado até o momento.
5 ANÁLISE DOS RESULTADOS
Este capítulo apresenta a descrição dos resultados obtidos. Foram submetidos três
conjuntos de testes. Para cada parâmetro está colocado um conjunto de gráficos mostrando o
tempo de resposta para cada um dos três conjuntos de testes e cada um dos diferentes valores
testados.
Foi percebido, como regra geral, que o maior e o menor tempo de respostas foram
obtidos para o conjunto 1 utilizando-se o valor padrão, com exceção dos parâmetros
DB_CACHE_SIZE e LOG_CHECKPOIN_TIMEOUT, que alcançaram seu maior tempo de
resposta com o valor de 12MB e 2100 segundos respectivamente.
Tempo de resposta
200 150
150 100
100
50 50
0
0
%
0%
0%
%
%
%
%
%
%
%
%
%
0%
0%
20
40
60
80
10
10
20
30
40
50
60
70
80
90
10
Proporção de seleções
Proporção de seleções
Conjunto 3 - Parâmetro
DB_BLOCK_BUFFERS
Tempo de resposta
120
100
80
60
40
20
0
%
%
%
%
%
%
%
%
%
0%
0%
10
20
30
40
50
60
70
80
90
10
Proporção de seleções
Tempo de resposta
200 150
150 100
100
50 50
0
0
%
0%
0%
%
%
%
%
%
%
%
%
%
0%
0%
20
40
60
80
10
10
20
30
40
50
60
70
80
90
10
Proporção de seleções
Proporção de seleções
12 24 36 48 12 24 36 48
Conjunto 3 - Parâmetro
DB_CACHE_SIZE
Tempo de resposta
100
80
60
40
20
0
%
%
%
%
%
%
%
%
%
0%
0%
10
20
30
40
50
60
70
80
90
10
Proporção de seleções
12 24 36 48
Esta alteração, deixou o processo cerca de 16,77% mais lento do que quando executado com o
valor padrão.
200
150 150
Tempo de
resposta
100 100
50 50
0
0
%
0%
0%
0%
20
40
60
80
0%
10
20
40
60
80
10
Proporção de seleções
Proporção de seleções
Conjunto 3 - Parâmetro
LOCK_SGA
Tempo de resposta
100
80
60
40
20
0
%
%
%
%
%
%
%
%
%
0%
0%
10
20
30
40
50
60
70
80
90
10
Proporção de seleções
TRUE FALSE
Tempo de resposta
200 150
150 100
100
50 50
0
0
%
0%
0%
%
%
%
%
%
%
%
%
%
0%
0%
20
40
60
80
10
10
20
30
40
50
60
70
80
90
10
Proporção de seleções
Proporção de seleções
4 8 12 16 4 8 12 16
46
Conjunto 3 - Parâmetro
DB_FILE_MULTIBLOCK_READ_COUNT
Tempo de resposta
100
80
60
40
20
0
%
%
%
%
%
%
%
%
%
0%
0%
10
20
30
40
50
60
70
80
90
10
Proporção de seleções
4 8 12 16
Tempo de resposta
200 150
150
100
100
50 50
0
0
%
0%
0%
20
40
60
80
%
%
%
%
%
%
%
%
%
0%
0%
10
10
20
30
40
50
60
70
80
90
10
Proporção de seleções
Proporção de seleções
1 2 3 4
1 2 3 4
Conjunto 3 - Parâmetro
GLOBAL_CONTEXT_POOL_SIZE
Tempo de resposta
120
100
80
60
40
20
0
%
%
%
%
%
%
%
%
%
0%
0%
10
20
30
40
50
60
70
80
90
10
Proporção de seleções
1 2 3 4
47
0%
0%
%
%
%
%
%
%
%
%
%
0%
0%
20
40
60
80
10
10
20
30
40
50
60
70
80
90
10
Proporção de seleções Proporção de seleções
Conjunto 3 - Parâmetro
LOG_CHECKPOINT_TIMEOUT
Tempo de resposta
120
100
80
60
40
20
0
%
%
%
%
%
%
%
%
%
0%
0%
10
20
30
40
50
60
70
80
90
10
Proporção de seleções
Tempo de resposta
200 150
150 100
100
50 50
0
0
%
0%
0%
%
%
%
%
%
%
%
%
%
0%
20
40
60
80
0%
10
10
20
30
40
50
60
70
80
90
10
Proporção de seleções
Proporção de seleções
0 25 50 75 0 25 50 75
Conjunto 3 - Parâmetro
OPTIMIZER_INDEX_CACHING
Tempo de resposta
100
80
60
40
20
0
%
%
%
%
%
%
%
%
%
0%
0%
10
20
30
40
50
60
70
80
90
10
Proporção de seleções
0 25 50 75
Tempo de resposta
200 150
150 100
100
50 50
0
0
%
0%
0%
%
%
%
%
%
%
%
%
%
0%
20
40
60
80
0%
10
10
20
30
40
50
60
70
80
90
10
Proporção de seleções
Proporção de seleções
Conjunto 3 - Parâmetro
OPTIMIZER_INDEX_COST_ADJ
Tempo de resposta
150
100
50
0
%
%
%
%
%
%
%
%
%
0%
0%
10
20
30
40
50
60
70
80
90
10
Proporção de seleções
150
200
150 100
100
50 50
0 0
%
0%
0%
%
%
%
%
%
%
%
%
%
0%
0%
20
40
60
80
10
20
30
40
50
60
70
80
90
10
10
Conjunto 3 - Parâmetro
OPTIMIZER_MAX_PERMUTATIONS
Tempo de resposta
150
100
50
0
%
%
%
%
%
%
%
%
%
0%
0%
10
20
30
40
50
60
70
80
90
10
Proporção de seleções
200
Tempo de
150
resposta
resposta
150 100
100
50 50
0 0
%
0%
0%
0%
0%
20
40
60
80
20
40
60
80
10
10
Proporção de seleções Proporção de seleções
Conjunto 3 - Parâmetro
OPTIMIZER_MODE
Tempo de
150
resposta
100
50
0
%
0%
0%
20
40
60
80
10
Proporção de seleções
FIRST_ROWS ALL_ROWS
CHOOSE RULE
Tempo de resposta
Tempo de resposta
200 120
100
150 80
60
100 40
50 20
0
0
%
%
%
%
%
%
%
%
%
0%
0%
10
20
30
40
50
60
70
80
90
%
%
%
%
%
%
%
%
%
0%
0%
10
10
20
30
40
50
60
70
80
90
10 Proporção de seleções
Proporção de seleções
TRUE FALSE TRUE FALSE
Conjunto 3 - Parâmetro
PRE_PAGE_SGA
Tempo de resposta
100
80
60
40
20
0
%
0%
0%
20
40
60
80
10
Proporção de seleções
TRUE FALSE
200 150
150 100
100 50
50 0
0
%
0%
0%
20
40
60
80
10
%
%
%
%
%
%
%
0%
0%
10
20
30
40
50
60
70
80
90
Proporção de seleções
10
Proporção de seleções
TRUE FALSE TRUE FALSE
52
Conjunto 3 - Parâmetro
QUERY_REWRITE_ENABLED
Tempo de resposta
100
80
60
40
20
0
%
0%
0%
20
40
60
80
10
Proporção de seleções
TRUE FALSE
150
Tempo de
200
resposta
150 100
100 50
50 0
0
%
0%
0%
20
40
60
80
%
0%
0%
10
20
40
60
80
10
Proporção de seleções
Proporção de seleções
STALED_TOLERATED STALED_TOLERATED
TRUSTED TRUSTED
ENFORCED ENFORCED
Conjunto 3 - Parâmetro
QUERY_REWRITE_INTEGRITY
Tempo de
resposta
100
50
0
%
0%
0%
20
40
60
80
10
Proporção de seleções
STALED_TOLERATED
TRUSTED
ENFORCED
53
Tempo de resposta
200 150
150 100
100
50 50
0
0
%
0%
0%
%
%
%
%
%
%
%
%
%
0%
0%
20
40
60
80
10
10
20
30
40
50
60
70
80
90
10
Proporção de seleções
Proporção de seleções
Conjunto 3 - Parâmetro
ROW_LOCKING
Tempo de resposta
100
80
60
40
20
0
%
%
%
%
%
%
%
%
%
0%
0%
10
20
30
40
50
60
70
80
90
10
Proporção de seleções
Tempo de resposta
Tempo de resposta
200 150
150 100
100 50
50 0
0
0%
0%
20
40
60
80
10
%
%
%
%
%
%
%
%
%
0%
0%
10
20
30
40
50
60
70
80
90
10
Proporção de seleções
Proporção de seleções
128 64 192 256 128 64 192 256
Conjunto 3 - Parâmetro
SGA_MAX_SIZE
Tempo de resposta
150
100
50
0
%
0%
0%
20
40
60
80
10
Proporção de seleções
128 64 192 256
Tempo de resposta
200 150
150 100
100
50 50
0
0
%
0%
0%
20
40
60
80
%
%
%
%
%
%
%
%
%
0%
0%
10
10
20
30
40
50
60
70
80
90
10
Proporção de seleções
Proporção de seleções
Conjunto 3 - Parâmetro
SORT_AREA_SIZE
Tempo de resposta
150
100
50
0
%
%
%
%
%
%
%
%
%
0%
0%
10
20
30
40
50
60
70
80
90
10
Proporção de seleções
Utilizando-se dos recursos de Trace e do Tkprof foi possível observar que o SGBD
possui uma grande dificuldade em atualizar e pesquisar tabelas muito grandes. Isto se deve, ao
fato de que estas tabelas não podem ser completamente armazenadas na memória, não
restando outra alternativa senão fazer a leitura e escrita no disco. Como o disco é muitas vezes
mais lento que a memória, cada vez que o SGBD necessita de um dado que está em disco, é
necessário que o processador interrompa o processamento para carregar do disco para o
buffer. O Oracle possui um parâmetro que permite que se aumente o tamanho do buffer
padrão, mas mesmo assim, dependendo do tamanho da tabela, este tamanho de bloco tende a
ser pequeno. Por esse motivo, tamanha oscilação nos tempos de resposta dos conjuntos de
dados.
58
Update cliente set C_Credit='CB' where C_ID IN (select C_ID from pedido p
where (C_ID=P.P_C_ID) and (P.P_PL_CNT>1));
Select count(*), I_Price from Item where I_Name like 'A100%' group by
I_Price;
DB_BLOCK_BUFFERS DB_CACHE_SIZE
800 800
600 600
400 400
200 200
0 0
Conj1 Conj2 Conj3 Conj1 Conj2 Conj3
LOCK_SGA DB_FILE_MULTIBLOCK_READ_COUNT
800 1000
600 800
600
400
400
200 200
0 0
Conj1 Conj2 Conj3 Conj1 Conj2 Conj3
GLOBAL_CONTEXT_POOL_SIZE LOG_CHECKPOINT_TIMEOUT
1000 800
800 600
600
400
400
200 200
0 0
Conj1 Conj2 Conj3 Conj1 Conj2 Conj3
OPTIMIZER_INDEX_CACHING OPTIMIZER_INDEX_COST_ADJ
800 800
600 600
400 400
200 200
0 0
Conj1 Conj2 Conj3 Conj1 Conj2 Conj3
OPTIMIZER_MAX_PERMUTATIONS OPTIMIZER_MODE
800 800
600 600
400 400
200 200
0 0
Conj1 Conj2 Conj3 Conj1 Conj2 Conj3
PRE_PAGE_SGA QUERY_REWRITE_ENABLED
800 800
600 600
400 400
200 200
0 0
Conj1 Conj2 Conj3 Conj1 Conj2 Conj3
QUERY_REWRITE_INTEGRITY ROW_LOCKING
800 800
600 600
400 400
200 200
0 0
Conj1 Conj2 Conj3 Conj1 Conj2 Conj3
SGA_MAX_SIZE SORT_AREA_SIZE
800 800
600 600
400 400
200 200
0 0
Conj1 Conj2 Conj3 Conj1 Conj2 Conj3
DECLARAÇÃO
Declaro, para os devidos fins, que o presente Trabalho de Conclusão está apto para
publicação e contém as alterações sugeridas pela banca de avaliação.
__________________________________
Prof. Miguel Rodrigues Fornari
__________________________________
Felipe Marin Flores