1 Descreva as etapas de processamento de uma instruo SQL no banco
Oracle (dica: lembre-se das estruturas de memria da SGA)
R: Primeiramente, verificado se h uma query idntica na Shared Pool. Se existir, o processo executado normalmente. Se no existir so executadas as seguintes etapas: a sintaxe do SQL validada, os objetos referidos validados e determinado o melhor plano de execuo. Depois verificado os blocos na Database Buffers Cache. Por ltimo retorna a instruo para o cliente, porm antes de gravar as alteraes no log file grava no Redo buffers para garantir a consistncia. 2 O que AWR? E ADDM? Como eles esto relacionados? R: AWR coleta estatsticas a cada uma hora e cria um AWR snapshot, que usado para comparaes de performance. Esses dados coletados so expostos como relatrios ou como views. ADDM examina os dados coletados pelo AWR para identificar possveis problemas no banco de dados, podendo localizar a causa raiz do problema de performance e recomendar uma correo. Para cada Snapshot criada pelo AWR uma anlise do ADDM gerada e os resultados so salvos no Banco. 3 O que Wait Event? E Wait Class? D trs exemplos de wait class e sua definio. R: Wait event - conta o tempo que cada sesso aguarda por um determinado tipo de evento no banco de dados, Wait Class um grupamento de eventos, como User Network ou I/O. Exemplos de Wait Class: Concurrency: Espera por recursos de banco de dados internos System I/O: espera por processos em background User I/O: espera do usurio I/O 4 O que o plano de execuo de uma query? Para que serve? R: uma sequncia de operaes que o banco de dados oracle realiza para executar uma instruo. Serve para analisar a performance de uma query. 5 Por que podemos dizer que, do modo geral, acessar uma tabela atravs da operao INDEX UNIQUE SCAN mais eficiente que atravs da operao FULL TABLE SCAN? R: Na FULL TABLE SCAN so percorridas todas as linhas da tabela enquanto que trabalhando indices como feito na INDEX UNIQUE SCAN o acesso direto a linha solicitada, portanto muito mais rpido. 6 Ao analisar o plano de execuo da query abaixo, temos o seguinte resultado: SELECT * FROM cidade WHERE cod_regiao=2;
Que ndice voc recomendaria? Por qu?
R: Recomendaria o INDEX UNIQUE SCAN. Porque no caso eu necessito s de um conjunto especifico da tabela, ento a melhor opo acessar a tabela por uso de ndices, um processo mais rpido.
7 Analise o plano de execuo da query abaixo:
SELECT p.nome_pais, R.nome_regiao FROM PAIS P INNER JOIN REGIAO R ON P.COD_PAIS = R.COD_PAIS;
Como voc explica a operao de aceso tabela REGIAO se dar por um
index range scan usando o ndice IXREGIAO_PAIS? (OBS: este ndice da tabela REGIAO usa a coluna cod_pais como chave).
8 Segundo as boas prticas, cite 3 exemplos de quando indicado criar
um ndice para uma coluna, e 3 exemplos de quando no indicado indexar uma coluna. Quando se deve criar ndices: 1 Quando a coluna possui uma quantidade muito grande de dados. 2 Quando a coluna tem uma grande quantidade de pesquisas. 3 Quando a coluna possui informaes criticas que devem ser acessadas mais rapidamente
Quando no se deve criar ndices:
1 Quando se tem um volume de dados muito grande e pouco espao de disco restante 2 Quando a coluna no possui muitas pesquisas 3 Quando a coluna no possui uma quantidade significativa de dados
9 Observe a query abaixo:
SELECT nome_cidade FROM cidade WHERE cod_cidade IN (SELECT cod_cidade FROM cidade WHERE cod_regiao = 2); Qual das duas instrues SQL ser executada primeiro? Por qu? R: A instruo de selecionar a coluna nome_cidade na Tabela cidade, Porque a instruo select procura sempre pela primeira query idntica ou valida.
10 Para a view vwCidade, criada com a instruo abaixo:
CREATE VIEW vwCidade AS SELECT nome_estado, nome_cidade FROM cidade C INNER JOIN estado E ON c.cod_estado = e.cod_estado Considera agora a seguinte instruo SQL: SELECT * FROM vwCidade; Qual seria o plano de execuo desta query? Por que?