Este documento discute otimização de desempenho de banco de dados. Aborda tópicos como:
1) O otimizador relacional que gera planos de execução SQL considerando fatores como custo;
2) Medição de seletividade e densidade de índices para escolha do tipo;
3) Diferentes caminhos de acesso aos dados, incluindo varrimento de tabela vs índice;
4) Reescrita de queries para maior eficiência.
Proyectos Biblioteca Popular Manuel Belgranoguideuf
presentación de los proyectos de la biblioteca popular manuel belgrano realizada para el 85 aniversario. Cada proyecto tendrá su propia presentación proximamente.
Esta é uma apresentação contendo alguns desenhos feitos por crianças, após a apresentação do Teatro do Lataço “A incrível viagem ao mundo escuro”, promovido pela ABEAÇO - Associação Brasileira das Embalagens de Aço.
Proyectos Biblioteca Popular Manuel Belgranoguideuf
presentación de los proyectos de la biblioteca popular manuel belgrano realizada para el 85 aniversario. Cada proyecto tendrá su propia presentación proximamente.
Esta é uma apresentação contendo alguns desenhos feitos por crianças, após a apresentação do Teatro do Lataço “A incrível viagem ao mundo escuro”, promovido pela ABEAÇO - Associação Brasileira das Embalagens de Aço.
SQL Server ES - Escrevendo queries rápidas (Performance/Query Tuning)Dirceu Resende
Palestra de Performance Tuning do do SQL Server ES - 10/06/2017 (Dirceu Resende)
Veja o post completo em: https://www.dirceuresende.com/blog/como-foi-o-2o-encontro-do-sql-server-es/
Atividade - Letra da música "Tem Que Sorrir" - Jorge e MateusMary Alvarenga
A música 'Tem Que Sorrir', da dupla sertaneja Jorge & Mateus, é um apelo à reflexão sobre a simplicidade e a importância dos sentimentos positivos na vida. A letra transmite uma mensagem de superação, esperança e otimismo. Ela destaca a importância de enfrentar as adversidades da vida com um sorriso no rosto, mesmo quando a jornada é difícil.
Na sequência das Eleições Europeias realizadas em 26 de maio de 2019, Portugal elegeu 21 eurodeputados ao Parlamento Europeu para um mandato de cinco ano (2019-2024).
Desde essa data, alguns eurodeputados saíram e foram substituídos, pelo que esta é a nova lista atualizada em maio de 2024.
Para mais informações, consulte o dossiê temático Eleições Europeias no portal Eurocid:
https://eurocid.mne.gov.pt/eleicoes-europeias
Autor: Centro de Informação Europeia Jacques Delors
Fonte: https://infoeuropa.mne.gov.pt/Nyron/Library/Catalog/winlibimg.aspx?doc=52295&img=11583
Data de conceção: maio 2019.
Data de atualização: maio 2024.
Slides Lição 9, Betel, Ordenança para uma vida de santificação, 2Tr24.pptxLuizHenriquedeAlmeid6
Slideshare Lição 9, Betel, Ordenança para uma vida de santificação, 2Tr24, Pr Henrique, EBD NA TV, 2° TRIMESTRE DE 2024, ADULTOS, EDITORA BETEL, TEMA, ORDENANÇAS BÍBLICAS, Doutrina Fundamentais Imperativas aos Cristãos para uma vida bem-sucedida e de Comunhão com DEUS, estudantes, professores, Ervália, MG, Imperatriz, MA, Cajamar, SP, estudos bíblicos, gospel, DEUS, ESPÍRITO SANTO, JESUS CRISTO, Comentários, Bispo Abner Ferreira, Com. Extra Pr. Luiz Henrique, 99-99152-0454, Canal YouTube, Henriquelhas, @PrHenrique
Livro de conscientização acerca do autismo, através de uma experiência pessoal.
O autismo não limita as pessoas. Mas o preconceito sim, ele limita a forma com que as vemos e o que achamos que elas são capazes. - Letícia Butterfield.
Slides Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24.pptxLuizHenriquedeAlmeid6
Slideshare Lição 9, Central Gospel, As Bodas Do Cordeiro, 1Tr24, Pr Henrique, EBD NA TV, Revista ano 11, nº 1, Revista Estudo Bíblico Jovens E Adultos, Central Gospel, 2º Trimestre de 2024, Professor, Tema, Os Grandes Temas Do Fim, Comentarista, Pr. Joá Caitano, estudantes, professores, Ervália, MG, Imperatriz, MA, Cajamar, SP, estudos bíblicos, gospel, DEUS, ESPÍRITO SANTO, JESUS CRISTO, Com. Extra Pr. Luiz Henrique, 99-99152-0454, Canal YouTube, Henriquelhas, @PrHenrique
LIVRO MPARADIDATICO SOBRE BULLYING PARA TRABALHAR COM ALUNOS EM SALA DE AULA OU LEITURA EXTRA CLASSE, COM FOCO NUM PROBLEMA CRUCIAL E QUE ESTÁ TÃO PRESENTE NAS ESCOLAS BRASILEIRAS. OS ALUNOS PODEM LER EM SALA DE AULA. MATERIAL EXCELENTE PARA SER ADOTADO NAS ESCOLAS
Slides Lição 10, CPAD, Desenvolvendo uma Consciência de Santidade, 2Tr24.pptxLuizHenriquedeAlmeid6
Slideshare Lição 10, CPAD, Desenvolvendo uma Consciência de Santidade, 2Tr24, Pr Henrique, EBD NA TV, Lições Bíblicas, 2º Trimestre de 2024, adultos, Tema, A CARREIRA QUE NOS ESTÁ PROPOSTA, O CAMINHO DA SALVAÇÃO, SANTIDADE E PERSEVERANÇA PARA CHEGAR AO CÉU, Coment Osiel Gomes, estudantes, professores, Ervália, MG, Imperatriz, MA, Cajamar, SP, estudos bíblicos, gospel, DEUS, ESPÍRITO SANTO, JESUS CRISTO, Com. Extra Pr. Luiz Henrique, de Almeida Silva, tel-What, 99-99152-0454, Canal YouTube, Henriquelhas, @PrHenrique, https://ebdnatv.blogspot.com/
Slides Lição 10, CPAD, Desenvolvendo uma Consciência de Santidade, 2Tr24.pptx
Gestão da Aplicação
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
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.
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.
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