SlideShare ist ein Scribd-Unternehmen logo
1 von 35
Administração de Bases de Dados



Afinação da Aplicação
  (Desempenho da Aplicação)



       Carlos Pampulim Caldeira
    http://www.di.uevora.pt/~ccaldeira
    http://makingdatawork.blogspot.pt
Optimizador Relacional
•   SQL, standard para acesso à informação
•   Alto nível de abstracção
•   Quais são os dados pretendidos
•   Não especifica como os ir buscar
•   Access paths, caminhos de acesso aos dados
•   Forma desestruturada de escrita
•   Operações a nível de conjuntos de dados




• Permite a adaptação do SQL ao ambiente
  dinâmico da base de dados:
    • Tabelas crescem / diminuem
    • Índices adicionados / removidos
    • Base dados fragmentada / desfragmentada
Optimizador Relacional
Optimizador Relacional
Aplicações estão isoladas:
  • Estrutura (independência Lógica)
  • Forma armazenamento (independência Física)
Index Selectivity
Taxa de duplicação numa coluna indexada. Selectividade
ideal é 1, apenas alcansável em índices únicos.


Is = total valores distintos / número de linhas da tabela

    Ex. Boa selectividade: 88 000 /100 000 = 0.88


Is < 0,1
Medição: Index Selectivity
SELECT COUNT (DISTINCT “Disciplina”)
                      “Valores distintos” FROM disciplina;
Valores distintos
  ---------------
            5
SELECT COUNT(*) “Nº Total Linhas” FROM disciplina;
Nº Total Linhas
  -----------------
             14
Is = 5 / 14
  = 0,35(714…)
Medição: Index Selectivity
Cardinalidade
[Código Postal] Quantos distintos haverá em PT?
Valores distintos
  ---------------
      1000?

Se tiver uma tabela com registo de 10 milhões de
licenças de condução?
Selectividade = 1000 / 10 000 000
Is = 0,0001%
Medição: Index Selectivity
Ajuda a decidir entre:
     • B*Tree
     • Bitmap
1. Se SELECTIVIDADE > 4% é B*Tree
2. Se SELECTIVIDADE < 4% é Bitmap

Os índices, com uma selectividade inferior a 0,1%, devem ser do tipo Bitmap pois
caso contrário nem serão levados em consideração pelo optimizador relacional.
Medição: Index Selectivity
Auditoria aos índices em uso (Oracle)
                         SELECT
                          INDEX_NAME "Nome",
                          DISTINCT_KEYS / NUM_ROWS * 100
                         "SELECTIVITY %",
                          NUM_ROWS,
                          DISTINCT_KEYS "DISTINCT",
                          LEAF_BLOCKS,
                          CLUSTERING_FACTOR,
                          BLEVEL "LEVEL",
                          AVG_LEAF_BLOCKS_PER_KEY "ALFBPKEY"
                         FROM
                          DBA_INDEXES
                         WHERE
                          DISTINCT_KEYS / NUM_ROWS < .1 AND
                          NUM_ROWS > 0
                         ORDER BY "SELECTIVITY %" DESC;
Index Density
Percentagem de duplicados numa coluna indexada

Supor tabela com 2 milhões linhas:
 1 / NUM_DISCTINCT (not null)

 1 / 2 000 000 = 0,0000005
 1 / 2 = 0,5
Joins
Dois métodos de join:
   • Join em ciclo (nested-loop join)
        uma linha é identificada na tabela outer e em seguida a tabela inner é
        varrida à procura de uma ligação e, assim sucessivamente até à última
        ocorrência na tabela outer.

   • Join combinado (merge-scan join)
        as linhas das tabelas são ordenadas e depois cada uma das tabelas é
        lida sequencialmente e as colunas coincidentes são assinaladas e as
        linhas devolvidas.

Notas: O join combinado deve ser o escolhido quando a tabela joined um número muito
      grande linhas ou quando há muitas linhas que satisfazem a condição, ou ainda quando
      os predicados do join não são muito selectivos.
Joins
Nº de tabelas na junção   Nº de possíveis (ordens) de junções
1                         1
2                         2
3                         6
4                         24
5                         120
6                         720
7                         5040
8                         40320
9                         363880
10                        3628800
11                        39916800
12                        479001600
13                        6227020800
14                        87178291200
15                        1307674368000
16                        20922789888000
Caminho de acesso aos dados
Varrimento das tabelas:
 • não existe(m) índice(s) ou as condições
   [WHERE] excluem o(s) índice(s)
 • grande número de linhas que satisfazem as
   condições
 • índices com baixo clustering (index page cluster ratio)
 • a tabela é demasiado pequena (poucas linhas)
Caminho de acesso aos dados
Acesso directo pelo índice (direct index lookup)

   SELECT        número, apelido, nome
   FROM          empregado
   WHERE         cargo = “Gerente”
   AND           função = 1
   AND           departamento = “D01” ;



         cargo           função      departamento
Caminho de acesso aos dados
Varrimento do índice:
Varrimento por comparação exacta
      (matching index scan)

SELECT      número, apelido, nome
FROM        empregado
WHERE       cargo = “Gerente”
AND         função = 1
AND         departamento = “D01” ;
Caminho de acesso aos dados
Varrimento do índice:

 Varrimento por comparação exacta
       (matching index scan)

                                             Pág Raíz




                          Pág                              Pág
                         Nonleaf                          Nonleaf




                Pág                 Pág                  Pág.
               Nonleaf             Nonleaf              Nonleaf




       Folha             Folha                  Folha             Folha   Folha
Caminho de acesso aos dados
Varrimento do índice:

 Varrimento pela posição relativa
    (nonmatching index scan)



SELECT         número, apelido, nome
FROM           empregado                Não há predicado de
WHERE          função = 1               entrada no índice,
AND            departamento = “D01” ;   logo a estrutura do
                                        índice não pode ser
                                        utilizada.
Caminho de acesso aos dados
Varrimento do índice:

  Varrimento pela posição relativa
     (nonmatching index scan)

                                           Pág Raíz




                        Pág                              Pág
                       Nonleaf                          Nonleaf




              Pág                 Pág                  Pág.
             Nonleaf             Nonleaf              Nonleaf




     Folha             Folha                  Folha             Folha   Folha
Caminho de acesso aos dados

Varrimento do índice:

 • varrimento do índice > varrimento da tabela
Caminho de acesso aos dados
Clustered ou unclustered:

 • Acesso associado ao índice: lê pág. dados uma única
 • Acesso desassociado ao índice: múltiplas leituras
   mesma pág. de dados

 A CP não é uma boa opção para ser um índice clustered dado que o acesso
 aos seus valores é aleatório enquanto que o clustered favorece o acesso
 sequencial.

 Os índices clustered ao lerem as páginas das folhas nunca lêm a mesma duas
 vezes. Já os índices unclustered fazem múltiplos pedidos pois os dados estão
 espalhados pela tabela.
Caminho de acesso aos dados
Index screening:


 SELECT        número, apelido
 FROM          empregado
 WHERE         cargo = “Gerente”
                                             matching
 AND           função = 1
 AND           salário > 40000 ;             pos. relativo




      cargo        função     departamento      salário
Caminho de acesso aos dados

Acesso restrito aos índices (index covering)

 SELECT      número, apelido
 FROM        empregado
 WHERE       cargo = “Gerente”
 AND         função = 1
 AND         salário > 40000 ;


   cargo   função   departamento   salário   apelido   número
Caminho de acesso aos dados

Acesso restrito aos índices (index covering)

 • Não há I/O adicional à tabela
 • “Encorajar” o acesso index-only
    • Sobrecarga de colunas indexadas
Caminho de acesso aos dados

Acesso múltiplo (multi-index access):

 SELECT       número, apelido
 FROM         empregado
 WHERE        cargo = “Gerente”
 AND          função = 1 ;


      cargo             função
Caminho de acesso aos dados

Acesso múltiplo (multi-index access):

 Por vezes pode minimizar-se o número de índices
 criados promovendo múltiplos índices simples,
 i.e., com uma única coluna, em vez de muitas
 colunas compostas indexadas. A decisão de
 aplicar uns e/ou outros depende da eficiência do
 SGBDR na utilização das diversas formas de
 indexação.


  Nota: AND; OR
Ordenação de dados

A utilização de índices para evitar SORT's:

•   Distinct
•   Union
•   Group by
•   Order by
Desprezo pelo índice

O optimizador não utiliza o índice:

 • Sem predicados
 • Join com várias/muitas tabelas
 • Estatísticas desactualizadas
Views: acesso

Dois métodos:

 • View merging
 • View materialization

 O view merging é o método mais eficiente. O SQL aplicado no DDL da view é
 aglutinado (merged) com o SQL que refere a view. O SQL resultante é então
 utilizado para determinar o caminho de acesso aos dados.

 Quando não é possível combinar o SQL da view com o SQL que acede à view é
 criada uma tabela temporária que armazena os resultados da view. O SQL que
 acede à view é depois aplicado aos resultados guardados na tabela temporária. Daí
 a relativa ineficiência da view materialization.
Re(escrita) de queries

Alguns optimizadores:

WHERE coluna1 >= 1 AND coluna1 <= 100   , podem transformar esta

cláusula nesta:


WHERE coluna1 BETWEEN 1 AND 100
Re(escrita) de queries
transitividade do predicado (predicate transitive closure)

SELECT d."Nome do Departamento", e."Nome", e."Número de Funcionário"
FROM     empregado e, departamento d
WHERE e."Código do Departamento" = d."Código do Departamento"
AND      d."Código do Departamento" = "DO59";



   SELECT d."Nome do Departamento", e."Nome", e."Número de Funcionário"
   FROM    empregado e, departamento d
   WHERE e."Código do Departamento" = d."Código do Departamento"
   AND      e."Código do Departamento" = "DO59";
Optimização pelo custo
 O optimizador relacional é o subsistema de um
 SGBDR que gera planos de execução.

• Efeito da modificação dos parâmetros de
  configuração (Oracle):
  o cost-based
Análise do caminho de acesso

SQL Server:
• ShowPlan

Oracle:
• Explain
    set timing on; (SQL*Plus)
SQL: regras de Mullins

Codificação do SQL para a eficiência:

Regra 1: Depende...
Regra 2: Posição na query da cláusula
         mais restritiva
e prosseguindo até à 11ª regra.




Mullins, C. 2002. Chapter 12. Application Performance. Database Administration: The
Complete Guide to Practices and Procedures. Addison Wesley.
Optimização do SQL

Video [“esclarecedor”] sobre SQL
Optimization em Oracle: ver aqui.
Afinação da Aplicação - Oracle

SQL Analyse (Oracle): ver aqui.

Weitere ähnliche Inhalte

Andere mochten auch

6. Como subir vídeos de youtube.com?
6.  Como subir vídeos de youtube.com?6.  Como subir vídeos de youtube.com?
6. Como subir vídeos de youtube.com?Ramón París Lago
 
Apresentação WebTraining
Apresentação WebTrainingApresentação WebTraining
Apresentação WebTrainingWebTraining
 
Proyectos Biblioteca Popular Manuel Belgrano
Proyectos Biblioteca Popular Manuel BelgranoProyectos Biblioteca Popular Manuel Belgrano
Proyectos Biblioteca Popular Manuel Belgranoguideuf
 
Desenhos de crianças Teatro do Lataço
Desenhos de crianças Teatro do LataçoDesenhos de crianças Teatro do Lataço
Desenhos de crianças Teatro do LataçoVera Laporta
 
De la literatura a la escritura
De la literatura a la escrituraDe la literatura a la escritura
De la literatura a la escrituraMEN
 
Rri assistencia cf
Rri  assistencia cfRri  assistencia cf
Rri assistencia cfjribalt1
 
Imagenes de la nevada en El Retiro, Madrid, 9 enero 2009
Imagenes de la nevada en El Retiro, Madrid, 9 enero 2009Imagenes de la nevada en El Retiro, Madrid, 9 enero 2009
Imagenes de la nevada en El Retiro, Madrid, 9 enero 2009Eduardo Rodriguez Lopez
 
Listado Tanganika Marzo
Listado Tanganika MarzoListado Tanganika Marzo
Listado Tanganika MarzoMiguel Mora
 
Nobel Da Economia
Nobel Da EconomiaNobel Da Economia
Nobel Da Economiamigasjardim
 

Andere mochten auch (20)

6. Como subir vídeos de youtube.com?
6.  Como subir vídeos de youtube.com?6.  Como subir vídeos de youtube.com?
6. Como subir vídeos de youtube.com?
 
Apresentação WebTraining
Apresentação WebTrainingApresentação WebTraining
Apresentação WebTraining
 
Redes Sociales
Redes SocialesRedes Sociales
Redes Sociales
 
Proyectos Biblioteca Popular Manuel Belgrano
Proyectos Biblioteca Popular Manuel BelgranoProyectos Biblioteca Popular Manuel Belgrano
Proyectos Biblioteca Popular Manuel Belgrano
 
Netvibes
NetvibesNetvibes
Netvibes
 
pantallasos
pantallasospantallasos
pantallasos
 
Anuario 2010
Anuario 2010Anuario 2010
Anuario 2010
 
Comparacion Estadisti
Comparacion EstadistiComparacion Estadisti
Comparacion Estadisti
 
Desenhos de crianças Teatro do Lataço
Desenhos de crianças Teatro do LataçoDesenhos de crianças Teatro do Lataço
Desenhos de crianças Teatro do Lataço
 
De la literatura a la escritura
De la literatura a la escrituraDe la literatura a la escritura
De la literatura a la escritura
 
Rri assistencia cf
Rri  assistencia cfRri  assistencia cf
Rri assistencia cf
 
Aprendi
AprendiAprendi
Aprendi
 
NHS Points 3-14-2010
NHS Points 3-14-2010NHS Points 3-14-2010
NHS Points 3-14-2010
 
Imagenes de la nevada en El Retiro, Madrid, 9 enero 2009
Imagenes de la nevada en El Retiro, Madrid, 9 enero 2009Imagenes de la nevada en El Retiro, Madrid, 9 enero 2009
Imagenes de la nevada en El Retiro, Madrid, 9 enero 2009
 
Listado Tanganika Marzo
Listado Tanganika MarzoListado Tanganika Marzo
Listado Tanganika Marzo
 
Cancer de tiroides
Cancer de tiroidesCancer de tiroides
Cancer de tiroides
 
Lecture5
Lecture5Lecture5
Lecture5
 
Nadie Se Cruza Por Azar
Nadie Se Cruza Por AzarNadie Se Cruza Por Azar
Nadie Se Cruza Por Azar
 
Nobel Da Economia
Nobel Da EconomiaNobel Da Economia
Nobel Da Economia
 
MuñEcas Reborn
MuñEcas RebornMuñEcas Reborn
MuñEcas Reborn
 

Ähnlich wie Otimização de Desempenho de Bases de Dados

Banco de Dados.pptx
Banco de Dados.pptxBanco de Dados.pptx
Banco de Dados.pptxBrunoWuo
 
Conceitos Basicos em Banco de Dados
Conceitos Basicos em Banco de DadosConceitos Basicos em Banco de Dados
Conceitos Basicos em Banco de DadosAlefe Variani
 
Melhorando o desempenho de suas consultas no MySql
Melhorando o desempenho de suas consultas no MySqlMelhorando o desempenho de suas consultas no MySql
Melhorando o desempenho de suas consultas no MySqlHelder Lopes
 
Modulo-02-Aula-03-conteudo-para-cer.pptx
Modulo-02-Aula-03-conteudo-para-cer.pptxModulo-02-Aula-03-conteudo-para-cer.pptx
Modulo-02-Aula-03-conteudo-para-cer.pptxAugustoNicolau2
 
LabMM4 (T06 - 12/13) - Auto-associações e Introdução ao SQL
LabMM4 (T06 - 12/13) - Auto-associações e Introdução ao SQLLabMM4 (T06 - 12/13) - Auto-associações e Introdução ao SQL
LabMM4 (T06 - 12/13) - Auto-associações e Introdução ao SQLCarlos Santos
 
Arquitetura e sgbd de um banco de dados
Arquitetura e sgbd de um banco de dadosArquitetura e sgbd de um banco de dados
Arquitetura e sgbd de um banco de dadosdiogocbj
 
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)Dirceu Resende
 
Projeto de Sistemas - Aula004
Projeto de Sistemas - Aula004Projeto de Sistemas - Aula004
Projeto de Sistemas - Aula004Cláudio Amaral
 

Ähnlich wie Otimização de Desempenho de Bases de Dados (20)

Sql
SqlSql
Sql
 
Web App Flaws - SQL Injection
Web App Flaws - SQL InjectionWeb App Flaws - SQL Injection
Web App Flaws - SQL Injection
 
SQL Oracle
SQL OracleSQL Oracle
SQL Oracle
 
Banco de Dados.pptx
Banco de Dados.pptxBanco de Dados.pptx
Banco de Dados.pptx
 
Conceitos Basicos em Banco de Dados
Conceitos Basicos em Banco de DadosConceitos Basicos em Banco de Dados
Conceitos Basicos em Banco de Dados
 
Melhorando o desempenho de suas consultas no MySql
Melhorando o desempenho de suas consultas no MySqlMelhorando o desempenho de suas consultas no MySql
Melhorando o desempenho de suas consultas no MySql
 
Modulo-02-Aula-03-conteudo-para-cer.pptx
Modulo-02-Aula-03-conteudo-para-cer.pptxModulo-02-Aula-03-conteudo-para-cer.pptx
Modulo-02-Aula-03-conteudo-para-cer.pptx
 
LabMM4 (T06 - 12/13) - Auto-associações e Introdução ao SQL
LabMM4 (T06 - 12/13) - Auto-associações e Introdução ao SQLLabMM4 (T06 - 12/13) - Auto-associações e Introdução ao SQL
LabMM4 (T06 - 12/13) - Auto-associações e Introdução ao SQL
 
Data WareHOuse
Data WareHOuseData WareHOuse
Data WareHOuse
 
5 bdoo+bdor
5 bdoo+bdor5 bdoo+bdor
5 bdoo+bdor
 
Agbd aula4 sql_ddl
Agbd aula4 sql_ddlAgbd aula4 sql_ddl
Agbd aula4 sql_ddl
 
Slide da aula 04
Slide da aula 04Slide da aula 04
Slide da aula 04
 
2006 - ADONET.ppt
2006 - ADONET.ppt2006 - ADONET.ppt
2006 - ADONET.ppt
 
Arquitetura e sgbd de um banco de dados
Arquitetura e sgbd de um banco de dadosArquitetura e sgbd de um banco de dados
Arquitetura e sgbd de um banco de dados
 
Consultas SQL
Consultas SQLConsultas SQL
Consultas SQL
 
Aula 10 banco de dados
Aula 10   banco de dadosAula 10   banco de dados
Aula 10 banco de dados
 
Base de dados no Excel 1.pdf
Base de dados no Excel 1.pdfBase de dados no Excel 1.pdf
Base de dados no Excel 1.pdf
 
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)
 
Aplicativo aula02
Aplicativo aula02Aplicativo aula02
Aplicativo aula02
 
Projeto de Sistemas - Aula004
Projeto de Sistemas - Aula004Projeto de Sistemas - Aula004
Projeto de Sistemas - Aula004
 

Mehr von Carlos Pampulim Caldeira

Administração de Bases de Dados - Introdução
Administração de Bases de Dados - IntroduçãoAdministração de Bases de Dados - Introdução
Administração de Bases de Dados - IntroduçãoCarlos Pampulim Caldeira
 
Revisão do Desenho da Base de Dados | 2015
Revisão do Desenho da Base de Dados | 2015Revisão do Desenho da Base de Dados | 2015
Revisão do Desenho da Base de Dados | 2015Carlos Pampulim Caldeira
 
Salvaguarda e Recuperação da Base de Dados | Oracle
Salvaguarda e Recuperação da Base de Dados | OracleSalvaguarda e Recuperação da Base de Dados | Oracle
Salvaguarda e Recuperação da Base de Dados | OracleCarlos Pampulim Caldeira
 
Administração de bases de dados introdução
Administração de bases de dados   introduçãoAdministração de bases de dados   introdução
Administração de bases de dados introduçãoCarlos Pampulim Caldeira
 
Revisão do Desenho da Base de Dados - Design Review
Revisão do Desenho da Base de Dados - Design ReviewRevisão do Desenho da Base de Dados - Design Review
Revisão do Desenho da Base de Dados - Design ReviewCarlos Pampulim Caldeira
 

Mehr von Carlos Pampulim Caldeira (20)

Administração de Bases de Dados - Introdução
Administração de Bases de Dados - IntroduçãoAdministração de Bases de Dados - Introdução
Administração de Bases de Dados - Introdução
 
Custo Execução Queries | Oracle | 2015
Custo Execução Queries | Oracle | 2015Custo Execução Queries | Oracle | 2015
Custo Execução Queries | Oracle | 2015
 
Estatísticas | Oracle | 2015
Estatísticas | Oracle | 2015Estatísticas | Oracle | 2015
Estatísticas | Oracle | 2015
 
Revisão do Desenho da Base de Dados | 2015
Revisão do Desenho da Base de Dados | 2015Revisão do Desenho da Base de Dados | 2015
Revisão do Desenho da Base de Dados | 2015
 
Disponibilidade da Base de Dados
Disponibilidade da Base de DadosDisponibilidade da Base de Dados
Disponibilidade da Base de Dados
 
Salvaguarda e Recuperação da Base de Dados | Oracle
Salvaguarda e Recuperação da Base de Dados | OracleSalvaguarda e Recuperação da Base de Dados | Oracle
Salvaguarda e Recuperação da Base de Dados | Oracle
 
Views | Controlo de acesso aos dados
Views | Controlo de acesso aos dadosViews | Controlo de acesso aos dados
Views | Controlo de acesso aos dados
 
SQL e Transações
SQL e TransaçõesSQL e Transações
SQL e Transações
 
DBA | Tabelas de teste
DBA | Tabelas de testeDBA | Tabelas de teste
DBA | Tabelas de teste
 
Google BigQuery
Google BigQueryGoogle BigQuery
Google BigQuery
 
Administração de bases de dados introdução
Administração de bases de dados   introduçãoAdministração de bases de dados   introdução
Administração de bases de dados introdução
 
Ambiente de exploração oracle
Ambiente de exploração oracleAmbiente de exploração oracle
Ambiente de exploração oracle
 
Oracle | Estatísticas
Oracle | EstatísticasOracle | Estatísticas
Oracle | Estatísticas
 
Custo Execução de Queries
Custo Execução de QueriesCusto Execução de Queries
Custo Execução de Queries
 
User Management
User ManagementUser Management
User Management
 
Database Performance
Database PerformanceDatabase Performance
Database Performance
 
Data Availability
Data AvailabilityData Availability
Data Availability
 
Alterações na Base de Dados
Alterações na Base de DadosAlterações na Base de Dados
Alterações na Base de Dados
 
Revisão do Desenho da Base de Dados - Design Review
Revisão do Desenho da Base de Dados - Design ReviewRevisão do Desenho da Base de Dados - Design Review
Revisão do Desenho da Base de Dados - Design Review
 
Sistema Spares
Sistema SparesSistema Spares
Sistema Spares
 

Kürzlich hochgeladen

Atividade com a letra da música Meu Abrigo
Atividade com a letra da música Meu AbrigoAtividade com a letra da música Meu Abrigo
Atividade com a letra da música Meu AbrigoMary Alvarenga
 
Aula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptxAula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptxBiancaNogueira42
 
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANO
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANOInvestimentos. EDUCAÇÃO FINANCEIRA 8º ANO
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANOMarcosViniciusLemesL
 
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptxQUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptxIsabellaGomes58
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024Jeanoliveira597523
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxOsnilReis1
 
Educação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SPEducação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SPanandatss1
 
William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfAdrianaCunha84
 
Cultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfCultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfaulasgege
 
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024Sandra Pratas
 
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasCenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasRosalina Simão Nunes
 
PPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdfPPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdfAnaGonalves804156
 
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfBRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfHenrique Pontes
 
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdfDIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdfIedaGoethe
 
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniModelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniCassio Meira Jr.
 
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresLilianPiola
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalJacqueline Cerqueira
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditaduraAdryan Luiz
 
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptxSlide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptxconcelhovdragons
 

Kürzlich hochgeladen (20)

Atividade com a letra da música Meu Abrigo
Atividade com a letra da música Meu AbrigoAtividade com a letra da música Meu Abrigo
Atividade com a letra da música Meu Abrigo
 
Aula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptxAula 13 8º Ano Cap.04 Revolução Francesa.pptx
Aula 13 8º Ano Cap.04 Revolução Francesa.pptx
 
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANO
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANOInvestimentos. EDUCAÇÃO FINANCEIRA 8º ANO
Investimentos. EDUCAÇÃO FINANCEIRA 8º ANO
 
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptxQUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
QUARTA - 1EM SOCIOLOGIA - Aprender a pesquisar.pptx
 
ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024ABRIL VERDE.pptx Slide sobre abril ver 2024
ABRIL VERDE.pptx Slide sobre abril ver 2024
 
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptxATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
ATIVIDADE AVALIATIVA VOZES VERBAIS 7º ano.pptx
 
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
Orientação Técnico-Pedagógica EMBcae Nº 001, de 16 de abril de 2024
 
Educação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SPEducação São Paulo centro de mídias da SP
Educação São Paulo centro de mídias da SP
 
William J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdfWilliam J. Bennett - O livro das virtudes para Crianças.pdf
William J. Bennett - O livro das virtudes para Crianças.pdf
 
Cultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdfCultura e Sociedade - Texto de Apoio.pdf
Cultura e Sociedade - Texto de Apoio.pdf
 
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
HORA DO CONTO5_BECRE D. CARLOS I_2023_2024
 
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicasCenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
Cenários de Aprendizagem - Estratégia para implementação de práticas pedagógicas
 
PPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdfPPT _ Módulo 3_Direito Comercial_2023_2024.pdf
PPT _ Módulo 3_Direito Comercial_2023_2024.pdf
 
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdfBRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
BRASIL - DOMÍNIOS MORFOCLIMÁTICOS - Fund 2.pdf
 
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdfDIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
DIA DO INDIO - FLIPBOOK PARA IMPRIMIR.pdf
 
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e TaniModelos de Desenvolvimento Motor - Gallahue, Newell e Tani
Modelos de Desenvolvimento Motor - Gallahue, Newell e Tani
 
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolaresALMANANHE DE BRINCADEIRAS - 500 atividades escolares
ALMANANHE DE BRINCADEIRAS - 500 atividades escolares
 
Gerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem OrganizacionalGerenciando a Aprendizagem Organizacional
Gerenciando a Aprendizagem Organizacional
 
trabalho wanda rocha ditadura
trabalho wanda rocha ditaduratrabalho wanda rocha ditadura
trabalho wanda rocha ditadura
 
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptxSlide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
Slide de exemplo sobre o Sítio do Pica Pau Amarelo.pptx
 

Otimização de Desempenho de Bases de Dados

  • 1. Administração de Bases de Dados Afinação da Aplicação (Desempenho da Aplicação) Carlos Pampulim Caldeira http://www.di.uevora.pt/~ccaldeira http://makingdatawork.blogspot.pt
  • 2. Optimizador Relacional • SQL, standard para acesso à informação • Alto nível de abstracção • Quais são os dados pretendidos • Não especifica como os ir buscar • Access paths, caminhos de acesso aos dados • Forma desestruturada de escrita • Operações a nível de conjuntos de dados • Permite a adaptação do SQL ao ambiente dinâmico da base de dados: • Tabelas crescem / diminuem • Índices adicionados / removidos • Base dados fragmentada / desfragmentada
  • 4. Optimizador Relacional Aplicações estão isoladas: • Estrutura (independência Lógica) • Forma armazenamento (independência Física)
  • 5. Index Selectivity Taxa de duplicação numa coluna indexada. Selectividade ideal é 1, apenas alcansável em índices únicos. Is = total valores distintos / número de linhas da tabela Ex. Boa selectividade: 88 000 /100 000 = 0.88 Is < 0,1
  • 6. Medição: Index Selectivity SELECT COUNT (DISTINCT “Disciplina”) “Valores distintos” FROM disciplina; Valores distintos --------------- 5 SELECT COUNT(*) “Nº Total Linhas” FROM disciplina; Nº Total Linhas ----------------- 14 Is = 5 / 14 = 0,35(714…)
  • 7. Medição: Index Selectivity Cardinalidade [Código Postal] Quantos distintos haverá em PT? Valores distintos --------------- 1000? Se tiver uma tabela com registo de 10 milhões de licenças de condução? Selectividade = 1000 / 10 000 000 Is = 0,0001%
  • 8. Medição: Index Selectivity Ajuda a decidir entre: • B*Tree • Bitmap 1. Se SELECTIVIDADE > 4% é B*Tree 2. Se SELECTIVIDADE < 4% é Bitmap Os índices, com uma selectividade inferior a 0,1%, devem ser do tipo Bitmap pois caso contrário nem serão levados em consideração pelo optimizador relacional.
  • 9. Medição: Index Selectivity Auditoria aos índices em uso (Oracle) SELECT INDEX_NAME "Nome", DISTINCT_KEYS / NUM_ROWS * 100 "SELECTIVITY %", NUM_ROWS, DISTINCT_KEYS "DISTINCT", LEAF_BLOCKS, CLUSTERING_FACTOR, BLEVEL "LEVEL", AVG_LEAF_BLOCKS_PER_KEY "ALFBPKEY" FROM DBA_INDEXES WHERE DISTINCT_KEYS / NUM_ROWS < .1 AND NUM_ROWS > 0 ORDER BY "SELECTIVITY %" DESC;
  • 10. Index Density Percentagem de duplicados numa coluna indexada Supor tabela com 2 milhões linhas: 1 / NUM_DISCTINCT (not null) 1 / 2 000 000 = 0,0000005 1 / 2 = 0,5
  • 11. Joins Dois métodos de join: • Join em ciclo (nested-loop join) uma linha é identificada na tabela outer e em seguida a tabela inner é varrida à procura de uma ligação e, assim sucessivamente até à última ocorrência na tabela outer. • Join combinado (merge-scan join) as linhas das tabelas são ordenadas e depois cada uma das tabelas é lida sequencialmente e as colunas coincidentes são assinaladas e as linhas devolvidas. Notas: O join combinado deve ser o escolhido quando a tabela joined um número muito grande linhas ou quando há muitas linhas que satisfazem a condição, ou ainda quando os predicados do join não são muito selectivos.
  • 12. Joins Nº de tabelas na junção Nº de possíveis (ordens) de junções 1 1 2 2 3 6 4 24 5 120 6 720 7 5040 8 40320 9 363880 10 3628800 11 39916800 12 479001600 13 6227020800 14 87178291200 15 1307674368000 16 20922789888000
  • 13. Caminho de acesso aos dados Varrimento das tabelas: • não existe(m) índice(s) ou as condições [WHERE] excluem o(s) índice(s) • grande número de linhas que satisfazem as condições • índices com baixo clustering (index page cluster ratio) • a tabela é demasiado pequena (poucas linhas)
  • 14. Caminho de acesso aos dados Acesso directo pelo índice (direct index lookup) SELECT número, apelido, nome FROM empregado WHERE cargo = “Gerente” AND função = 1 AND departamento = “D01” ; cargo função departamento
  • 15. Caminho de acesso aos dados Varrimento do índice: Varrimento por comparação exacta (matching index scan) SELECT número, apelido, nome FROM empregado WHERE cargo = “Gerente” AND função = 1 AND departamento = “D01” ;
  • 16. Caminho de acesso aos dados Varrimento do índice: Varrimento por comparação exacta (matching index scan) Pág Raíz Pág Pág Nonleaf Nonleaf Pág Pág Pág. Nonleaf Nonleaf Nonleaf Folha Folha Folha Folha Folha
  • 17. Caminho de acesso aos dados Varrimento do índice: Varrimento pela posição relativa (nonmatching index scan) SELECT número, apelido, nome FROM empregado Não há predicado de WHERE função = 1 entrada no índice, AND departamento = “D01” ; logo a estrutura do índice não pode ser utilizada.
  • 18. Caminho de acesso aos dados Varrimento do índice: Varrimento pela posição relativa (nonmatching index scan) Pág Raíz Pág Pág Nonleaf Nonleaf Pág Pág Pág. Nonleaf Nonleaf Nonleaf Folha Folha Folha Folha Folha
  • 19. Caminho de acesso aos dados Varrimento do índice: • varrimento do índice > varrimento da tabela
  • 20. Caminho de acesso aos dados Clustered ou unclustered: • Acesso associado ao índice: lê pág. dados uma única • Acesso desassociado ao índice: múltiplas leituras mesma pág. de dados A CP não é uma boa opção para ser um índice clustered dado que o acesso aos seus valores é aleatório enquanto que o clustered favorece o acesso sequencial. Os índices clustered ao lerem as páginas das folhas nunca lêm a mesma duas vezes. Já os índices unclustered fazem múltiplos pedidos pois os dados estão espalhados pela tabela.
  • 21. Caminho de acesso aos dados Index screening: SELECT número, apelido FROM empregado WHERE cargo = “Gerente” matching AND função = 1 AND salário > 40000 ; pos. relativo cargo função departamento salário
  • 22. Caminho de acesso aos dados Acesso restrito aos índices (index covering) SELECT número, apelido FROM empregado WHERE cargo = “Gerente” AND função = 1 AND salário > 40000 ; cargo função departamento salário apelido número
  • 23. Caminho de acesso aos dados Acesso restrito aos índices (index covering) • Não há I/O adicional à tabela • “Encorajar” o acesso index-only • Sobrecarga de colunas indexadas
  • 24. Caminho de acesso aos dados Acesso múltiplo (multi-index access): SELECT número, apelido FROM empregado WHERE cargo = “Gerente” AND função = 1 ; cargo função
  • 25. Caminho de acesso aos dados Acesso múltiplo (multi-index access): Por vezes pode minimizar-se o número de índices criados promovendo múltiplos índices simples, i.e., com uma única coluna, em vez de muitas colunas compostas indexadas. A decisão de aplicar uns e/ou outros depende da eficiência do SGBDR na utilização das diversas formas de indexação. Nota: AND; OR
  • 26. Ordenação de dados A utilização de índices para evitar SORT's: • Distinct • Union • Group by • Order by
  • 27. Desprezo pelo índice O optimizador não utiliza o índice: • Sem predicados • Join com várias/muitas tabelas • Estatísticas desactualizadas
  • 28. Views: acesso Dois métodos: • View merging • View materialization O view merging é o método mais eficiente. O SQL aplicado no DDL da view é aglutinado (merged) com o SQL que refere a view. O SQL resultante é então utilizado para determinar o caminho de acesso aos dados. Quando não é possível combinar o SQL da view com o SQL que acede à view é criada uma tabela temporária que armazena os resultados da view. O SQL que acede à view é depois aplicado aos resultados guardados na tabela temporária. Daí a relativa ineficiência da view materialization.
  • 29. Re(escrita) de queries Alguns optimizadores: WHERE coluna1 >= 1 AND coluna1 <= 100 , podem transformar esta cláusula nesta: WHERE coluna1 BETWEEN 1 AND 100
  • 30. Re(escrita) de queries transitividade do predicado (predicate transitive closure) SELECT d."Nome do Departamento", e."Nome", e."Número de Funcionário" FROM empregado e, departamento d WHERE e."Código do Departamento" = d."Código do Departamento" AND d."Código do Departamento" = "DO59"; SELECT d."Nome do Departamento", e."Nome", e."Número de Funcionário" FROM empregado e, departamento d WHERE e."Código do Departamento" = d."Código do Departamento" AND e."Código do Departamento" = "DO59";
  • 31. Optimização pelo custo O optimizador relacional é o subsistema de um SGBDR que gera planos de execução. • Efeito da modificação dos parâmetros de configuração (Oracle): o cost-based
  • 32. Análise do caminho de acesso SQL Server: • ShowPlan Oracle: • Explain set timing on; (SQL*Plus)
  • 33. SQL: regras de Mullins Codificação do SQL para a eficiência: Regra 1: Depende... Regra 2: Posição na query da cláusula mais restritiva e prosseguindo até à 11ª regra. Mullins, C. 2002. Chapter 12. Application Performance. Database Administration: The Complete Guide to Practices and Procedures. Addison Wesley.
  • 34. Optimização do SQL Video [“esclarecedor”] sobre SQL Optimization em Oracle: ver aqui.
  • 35. Afinação da Aplicação - Oracle SQL Analyse (Oracle): ver aqui.

Hinweis der Redaktion

  1. nested-loop: uma linha é identificada na tabelaouter e em seguida a tabela inner é varrida à procura de uma ligação e, assim sucessivamente até à última ocorrência na tabela outer.merge-scan: as linhas das tabelas são ordenadas e depois cada uma das tabelas é lida sequencialmente e as colunas coincidentes são assinaladas e as linhas devolvidas.A merge scan join is preferable when the joined table has a large number of rows or qualifyingrows, and the join predicates are not very selective.Create suitable indexes to avoid the sort operation and increase the speed of the merge scan join