Top Banner
1 Bancos de Dados IV Tuning de Bancos de Dados Rogério Costa [email protected]
57

Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Jul 15, 2018

Download

Documents

nguyentuyen
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

1

Bancos de Dados IV

Tuning de

Bancos de Dados

Rogério Costa

[email protected]

Page 2: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Sintonia (Tuning) de Bancos de Dados

O que é?

Realizar ajustes de forma a obter um melhor

tempo de resposta para determinada

aplicação e/ou aumentar throughput =>

Garantir um desempenho satisfatório das

aplicações de banco de dados

Page 3: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Conhecimento para o Tuning

O tuning de SGBDs envolve o conhecimento

de muitas questões distintas:

Hardware e sistema operacional

Gerência de memória e acesso a discos

Controle de concorrência, controle de

recuperação

Uso de índices

Otimização e reescrita de consultas

Page 4: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Arquitetura Lógica de SGBDs

EE1 EE2 EE3

EC

EI

Três níveis de abstração:

• Esquemas Externos (EE)

• Esquema Conceitual (EC)

• Esquema Interno (EI)

Princípio da Independência de Dados

• Independência física: fortemente desejável

• Independência lógica: desejável mas nem

sempre possível

Page 5: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Controle de

Concorrência

Processador de Consultas

Gerente de Armazenamento

Arquitetura Funcional

Otimizador Executor

Gerência de

Bloqueios

Gerência de

Bloqueios

Gerência de

Transação e

Recuperação

Controle de Memória

Controle de Dados

Meta-Dados e

Estatísticas

Dados e

Índices

Log de

Transações

SQL

Page 6: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Tuning

Dificuldades:

Perceber que um recurso está sendo mal utilizado

=> monitoramento é parte fundamental do

processo

Localizar e entender a verdadeira fonte do

problema => Mais de 90% do tempo para

resolução de problemas de desempenho é gasto

no diagnóstico.

Page 7: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Alguns conceitos...

Plano de acesso: caminhos e formas de

acesso que serão utilizados pelo SGBD para

atender a uma requisição SQL

Otimizador: componente do SGBD

responsável por montar o plano de acesso aos

dados => independência da consulta com

relação ao formato de armazenamento dos

dados

Page 8: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Otimização e Execução de Consultas

Envolve

Reescrita da consulta

Determinação do melhor plano de acesso

Após otimização, ocorre a execução da

consulta

Page 9: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Otimização e Execução de Consultas

Parse Query

Check de Semântica

Query Rewrite

Otimização do Plano de Acesso

Geração de Código

Page 10: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

O Otimizador

Problema “difícil”: muitas alternativas de

planos

O otimizador de consultas determina o plano

de acesso através de:

Heurísticas (otimização por regras, RBO)

Busca de plano de melhor custo (otimização por

custo, CBO)

Page 11: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Estatísticas

A otimização por custo demanda estatísticas,

tais como: de tabelas: número de linhas, blocos, tamanho de registro

médio

de colunas: número de valores distintos, número de

NULLs, histograma

de índices: número de folhas, níveis, clustering

de sistema: utilização típica de I/O e de CPU

A coleta de estatísticas pode ser automática

em alguns SGBDs

Page 12: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Planos de Execução

É o resultado da otimização

É especificado no plano de execução: Ordem de acesso às tabelas

Ordem de operações de seleção, projeção e junção

Índices utilizados

Tipos de junção

Ordenações

Tabelas intermediárias

Page 13: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Plano de Execução

Exemplo:

SELECT ender, datanasc

FROM empregado

WHERE nome = ‘Gal Costa’

Execution Plan

---------------------------------------------------------

0 SELECT STATEMENT Optimizer=CHOOSE

1 0 TABLE ACCESS (BY INDEX ROWID) OF 'EMPREGADO'

2 1 INDEX (UNIQUE SCAN) OF 'PK_EMP' (UNIQUE)

Page 14: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Planos de Execução

Existem dois tipos básicos de operação:

Métodos de Acesso (varreduras seqüenciais,

indexadas, por rowid)

Outras operações (junções, uniões, eliminação de

duplicatas)

Page 15: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Índices

Estruturas auxiliares para permitir acesso

mais rápido dados

Sem índices, para obter uma informação de uma

tabela, todas as linhas devem ser lidas do arquivo

Com índice, pode ser feito acesso direto

Índices em livros permitem que passemos diretamente para o capítulo desejado

Page 16: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Índices

Podem ser de diversos tipos:

Árvore B+ - Cluster ou não-cluster

Bitmap

...

Alguns SGBDs permitem:

índices com valores em ordem reversa

índices em resultados de funções

Page 17: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Métodos de Acesso – SQL Server

Principais métodos de acesso:

Table Scan: percorre toda a tabela

Index Scan/Clustered Index Scan: percorre todo

o nível folha do índice

Bookmark Lookup: procura uma linha na tabela

ou índice baseado em seu rowid

Index Seek/Clustered Index Seek: percorre parte

do índice recuperando informações de algumas

chaves

Page 18: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Métodos de Acesso – Oracle

Principais métodos de acesso: Full Table Scan: leitura seqüencial de todas as páginas de

uma tabela

Index Unique Scan: acessa uma única linha, garantido

por constraint

Index Range Scan: acessa subconjunto dos dados de

forma ordenada

Index Skip Scan: acesso indexado quando as colunas que

prefixam o índice composto não são especificadas

Fast Full Index Scan: usado quando o índice cobre a

consulta

Page 19: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Junções

Os principais algoritmos utilizados em

junções são:

Loops Aninhados (Nested Loops Join)

Ordenação/Intercalação (Merge Join)

Hashing (Hash Join)

Page 20: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Ordenação

Operação básica para diversas outras

operações físicas

Resolve (usualmente) várias cláusulas: Order

By, Group By, Distinct, Union, Minus, …

Operação cara

Se o conjunto a ser ordenado não cabe em

memória, esta operação pode ser ainda mais

cara

Page 21: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Fator de Filtro

Fator de filtro de um predicado: percentual de linhas da tabela que satisfazem

determinado predicado.

Utilizado pelo Otimizador para:

estimar tamanho da tabela resultado

decidir sobre uso de índices e outras estratégias de acesso

Calculado com base nas estatísticas existentes

Page 22: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Fator de Filtro

Fator de filtro de um predicado:

número entre 0 e 1:

0 FF 1

FF 0 poucas linhas

FF 1 todas as linhas da tabela

Page 23: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Fator de Filtro

Estatísticas:

Tabela de Empregados com 10.000 linhas

Coluna Sexo: 2 valores distintos.

Estimativas: FF(M) = 0.5, FF(F) = 0.5

Select nome

from empregados

where sexo = ‘M’

Estima retorno

de 5000 linhas

Select nome

from empregados

where sexo = ‘F’

Estima retorno

de 5000 linhas

Não usa

índice

Page 24: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Fator de Filtro

Estatísticas com a presença de Histograma: otimizador pode

perceber distribuição não-uniforme:

tabela de Empregados com 10.000 linhas:

coluna Sexo: distribuição não uniforme.

estatísticas de distribuição não uniforme:

M: 9.000 empregados

F: 1.000 empregados

FF(F) = 0.1

Para consulta “sexo = `F`”, otimizador pode decidir utilizar o índice da coluna sexo

Page 25: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Fator de Filtro x Índices

O fator de filtro influencia diretamente na

utilização de índices => quando consulta

retorna poucas linhas e existem índices

adequados, otimizador pode utilizar índices;

“Poucas linhas” depende de SGBD para

SGBD e de versão para versão.

Page 26: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Fator de Filtro

Predicado composto: AND

select * from empregados

where dept = ‘600’

and sexo = ‘m’ and cargo = ‘pgmr’

FF(sexo) = 0.9

FF(dept) = 0.2

FF(cargo) = 0.1

FF = 0.9 * 0.2 * 0.1 = 0.018

Estimativa para a tabela resultado: 180 linhas

Page 27: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Fator de Filtro

O Otimizador pode ser enganado em alguns casos em predicados correlacionados:

select * from empregados where cidade = ‘ rio de janeiro’

FF = 1 / 1.000 R = 100.000 / 1.000 = 100 linhas

select * from empregados where cidade = ‘ rio de janeiro’ and estado = ‘ rj’ and pais = ‘ brasil’

FF = (1 / 28) * (1 / 1.000) * (1/10) R = 100.000 / 28.000 = 3,5 linhas

Page 28: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Tuning

Se o problema está em uma consulta

apenas...

Tentar primeiro métodos com impactos locais:

reescrita da consulta

Criação de índices, desnormalização do

esquema e reordenação de transações, por

exemplo, podem afetar todo o sistema.

Page 29: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Reescrita

Evitar having se pudermos utilizar where.

Where elimina linhas antes da operação de

agrupamento e facilita a utilização de índices

na comparação

Select max(salario)

From empregado

Group by depnum

Having depnum = 100

Select max(salario)

From empregado

Where depnum = 100

Page 30: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Reescrita

Exemplo Oracle:

------------------------------------------------------------------------

| Operation | Name | Rows | Bytes| Cost

------------------------------------------------------------------------

| SELECT STATEMENT | | 1 | 16 | 360

| FILTER | | | |

| SORT GROUP BY | | 1 | 16 | 360

| TABLE ACCESS FULL |EMPREGADO | 100K| 1M| 102

Select max(salario) From empregado

Group by depnum Having depnum = 100

Page 31: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Reescrita

Exemplo Oracle

-------------------------------------------------------------------------

| Operation | Name | Rows | Bytes| Cost

-------------------------------------------------------------------------

| SELECT STATEMENT | | 1 | 16 | 2

| SORT AGGREGATE | | 1 | 16 |

| TABLE ACCESS BY INDEX RO|EMPREGADO | 100 | 1K| 2

| INDEX RANGE SCAN |IDX_EMP_DEPNUM | 100 | | 1

Select max(salario)

From empregado

Where depnum = 100

Custo cai de 360 para 2!

Queda para apenas 0,5% do

original!!!

Page 32: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Reescrita

Eliminar “DISTINCT”

Verificar a lógica da aplicação

Para consultas em uma única tabela, verificar se

o resultado da consulta contém alguma coluna

definida como chave única

Para consultas com junções verificar o tipo de

junção, as colunas da junção e as colunas

resultado

Page 33: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

-------------------------------------------------------------------------

| Operation | Name | Rows | Bytes| Cost

-------------------------------------------------------------------------

| SELECT STATEMENT | | 100K| 2M| 937

| SORT UNIQUE | | 100K| 2M| 937

| TABLE ACCESS FULL |EMPREGADO | 100K| 2M| 102

Reescrita

Exemplo Oracle: select distinct ident, nome from empregado;

select ident, nome from empregado; Custo = 102

Page 34: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Junções e Sub-Consultas

select E.Ident, E.nome from empregado E where exists ( select * from dependente D where D.Idemp = E.Ident )

Execution Plan

----------------------------------------------------------

SELECT STATEMENT Optimizer=CHOOSE

FILTER

TABLE ACCESS (FULL) OF ‘EMPREGADO'

INDEX (RANGE SCAN) OF 'IDX_DEPENDENTE_IDEMP' (NO N-UNIQUE)

Sem estatísticas

Page 35: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Junções e Sub-Consultas

Sem estatísticas

select E.Ident, E.nome from Empregado E, Dependente D where D.Idemp = E.Ident

Execution Plan

----------------------------------------------------------

SELECT STATEMENT Optimizer=CHOOSE

NESTED LOOPS

TABLE ACCESS (FULL) OF 'DEPENDENTE'

TABLE ACCESS (BY INDEX ROWID) OF ‘EMPREGADO'

INDEX (UNIQUE SCAN) OF 'IDX_EMPREGADO_ID' (UNIQUE)

Page 36: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Junções e Sub-Consultas

Sem estatísticas

select E.Ident, E.nome from Empregado E where E.Ident in ( select IdEmp from Dependente D)

Execution Plan

----------------------------------------------------------

SELECT STATEMENT Optimizer=CHOOSE

NESTED LOOPS

VIEW OF 'VW_NSO_1'

SORT (UNIQUE)

TABLE ACCESS (FULL) OF 'DEPENDENTE'

TABLE ACCESS (BY INDEX ROWID) OF ‘EMPREGADO'

INDEX (UNIQUE SCAN) OF 'IDX_EMPREGADO_ID' (UNIQUE)

Page 37: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Junções e Sub-Consultas

Com estatísticas

select E.Ident, E.nome from Empregado E where exists ( select * from Dependente D

where D.Idemp = E.Ident )

Execution Plan

----------------------------------------------------------

SELECT STATEMENT Optimizer=CHOOSE (Cost=10 Card=1640 Bytes=173840)

HASH JOIN (SEMI) (Cost=10 Card=1640 Bytes=173840)

TABLE ACCESS (FULL) OF 'EMPREGADO' (Cost=5 Card=2200 Bytes=226600)

INDEX (FAST FULL SCAN) OF 'IDX_DEPENDENTE_IDEMP' (NON-UNIQUE) (Cost=2

Card=3000 Bytes=9000)

select E.Ident, E.nome from Empregado E where E.Ident in ( select IdEmp from Dependente D)

Page 38: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Junções e Sub-Consultas

Com estatísticas

select E.Ident, E.nome from Empregado E, Dependente D where D.Idemp = E.Ident

Execution Plan

----------------------------------------------------------

SELECT STATEMENT Optimizer=CHOOSE (Cost=8 Card=3000 Bytes=318000)

HASH JOIN (Cost=8 Card=3000 Bytes=318000)

INDEX (FAST FULL SCAN) OF 'IDX_DEPENDENTE_IDEMP' (NON-UNIQUE) (Cost=2

Card=3000 Bytes=9000)

TABLE ACCESS (FULL) OF 'EMPREGADO' (Cost=5 Card=2200 Bytes=226600)

Page 39: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Tuning

Métodos de impacto com maior abrangência:

Criação/destruição de índices

Utilização de índices cluster

Visões materializadas

Escolha do tamanho adequado de bloco

Posicionamento dos arquivos em disco

Particionamento de objetos

Ajuste das áreas de memória

Ajuste dos parâmetros do SGBD

...

Page 40: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Distribuição de Arquivos

I/O paralelo => diminui a disputa por disco.

Dividir arquivos de maior acesso em

diferentes discos.

Manter em discos separados:

Tablespaces do sistema;

Arquivos de dados com tabelas muito acessadas;

Arquivos de índices para tabelas muito

acessadas;

Page 41: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Equilibrando I/O

Mapeamento entre tabelas / índices e os data

files

Tabela

Índice

Índice

Tablespace

Tablespace

Page 42: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Estrutura de Armazenamento

Tabelas e índices alocam um espaço no

banco de dados quando são criados =>

tamanho inicial.

A medida que crescem, podem surgir

extensões, que podem não ser contíguas;

Fragmentação pode gerar problema de

desempenho;

Page 43: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Row Migration

page n

F/V 1 F/V 2 F/V 3 F/V 4 L1 L2 L3 L4 header update t1 set c1 =

....

page p

F/V 1 F/V 2 F/V 3 F/V 4 L1 L2 L3 L4 header

page n

header

ANTES

DEPOIS

Page 44: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Row Chaining

page k page p page t

F/V 1 F/V 2 L1 L2 F/V 3 F/V 4 L3 L4 header

Representação lógica page k

page p

page t

Armazenamento físico F/V 3 L3 F/V 4 L4 header

F/V 1 header L1

F/V 2 header L2

Page 45: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Eliminando Fragmentação

Aloque o espaço adequado na criação do

objeto

Recrie o objeto, possivelmente movendo para

novo tablespace => crie o objeto com o

espaço adequado;

Exporte e reimporte a tabela

Page 46: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Particionamento

Decomposição de grandes objetos em objetos

menores =>partições.

Cada partição física possui seus próprios

atributos físicos => podem ser armazenadas

até mesmo em tablespaces diferentes!

Pode ser realizado com dados e com índices.

Page 47: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Particionamento

Exemplo: CREATE TABLE vendas (idVenda NUMBER(5),

data DATE, ValorTotal NUMBER(15,3)) PARTITION BY RANGE (data) (PARTITION data1 VALUES LESS THAN TO_DATE('01/04/2004','DD/MM/YYYY') TABLESPACE ts1, PARTITION data2 VALUES LESS THAN TO_DATE('01/07/2004','DD/MM/YYYY')

TABLESPACE ts2 . . . PARTITION data4 VALUES LESS THAN TO_DATE('01/01/2005','DD/MM/YYYY')

TABLESPACE ts4)

Page 48: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Particionamento

Pode ocorrer por intervalos de valores (de uma ou mais colunas), hash e lista.

Sub-particionamento => partições para cada partição.

Exemplo: partição por estados e, para cada estado, sub-partição por intervalo de datas

Page 49: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Particionamento

Otimizador pode acessar somente uma partição na realização de consultas.

Em tabelas com mesmas chave de particionamento e pontos de quebra, as junções podem ser realizadas por partições

Page 50: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Utilização da Memória

SGBDs utilizam a memória para armazenar:

Dados mais recentemente acessados. Operações de

atualização realizadas por usuários podem fazer com que

existam em memória várias versões da mesma

informação;

Informações sobre árvores de execução de comandos

SQL;

Informações sobre a instância utilizada e a base de dados

acessada;

Processos do servidor e seus parâmetros de controle;

Page 51: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Utilização da Memória

Para melhorar desempenho:

Aumentar memória principal: nem sempre é a

solução => realocar memória

Aumentar memória para o SGBD: concorrência

com outros programas no servidor

Manter na memória as informações que são

realmente necessárias

Page 52: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Estruturas de Memória

Database Buffer Cache

Contém cópias de blocos de dados lidos de

arquivos

Único para os processos de todos os usuários

conectados

Buffers organizados em listas - geralmente LRU

Page 53: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Estruturas de Memória

Quando uma informação é acessada, SGBD procura essa informação no database buffer cache.

Se encontra (cache hit) os dados são utilizados diretamente da memória.

Se não (cache miss), o bloco de dados é copiado do arquivo de dados para o database buffer cache e, então, utilizado.

Um alto número de cache misses pode ser um indicador de problemas de desempenho

Page 54: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Buffer Cache

Finalidade:

manter páginas mais usadas em memória

reduzir operações de I/O

Leitura lógica

página desejada pode estar ou não no BP

Leitura física

necessário realizar operação de I/O

Page 55: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Buffer Cache

Eficiência do Buffer Pool: hit ratio

%100l

l

readsogical

readsphysicalreadsogicalratiohit

• Desejável:

hit ratio > 95%

depende das características do sistema

Page 56: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Tuning

Regras básicas x experiência

Algumas regras indicam o caminho a tomar.

O otimizador pode gerar situações ilógicas...

Experiência e criatividade ajudam muito!

Sempre testar as soluções adotadas em ambiente

de simulação!

• Sintonia automática: será a solução?

Page 57: Bancos de Dados IV - inf.puc-rio.brrogcosta/inf1374/bd4-Tuning.pdfMétodos de Acesso – SQL ... Métodos de Acesso – Oracle ... Junções e Sub-Consultas Com estatísticas select

Auto-Sintonia (Self-Tuning)

Capacidade de auto-ajuste dos SGBDs ao

ambiente existente para obtenção de melhor

desempenho

Alguns SGBDs comerciais já possuem

mecanismos implementados