Self-Tuning e outros Self-* em SGBDs
Tutorial SBBD 2009
Sérgio Lifschitz
Departamento de Informática Pontifícia Universidade Católica do Rio de Janeiro (PUC-Rio) - Brasil
[email protected]
Self ou Auto-tuning?
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 3/80
Tuning de Bancos de Dados
Sintonia ou ajuste fino
“ Realizar ajustes em um sistemas de banco de dados de forma a obter um melhor tempo de resposta e/ou aumentar a vazão ( throughput ) para determinada aplicação ”
=> Buscar um bom desempenho em um sistema de banco de dados existente Hipótese: HW e SW não mudam!
Idéia de um VLDB
Mínimo de 500GB
VLDBs = terabytes
cartões de crédito, fast mail – DHL, FEDEX
5K tabelas e índices + 2K visões Tanto BD Produção como ODS
Algumas tabelas com mais de 50M tuplas 10 a 20 consultas por minuto, 12K usuários
(200 simultâneos)
“Basic SAP R/3”: 16K tabelas e 19K índices
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 5/80
(1)insert into VENDAS(prodNum, data, qtd, valor) values (4, current_timestamp, 20, 348);
(2)select prodNum, data, sum(valor) as total from VENDAS
where valor > 1500000 and
data between ‘20040101’ and ‘20040131’
group by prodNum, data;
Quais os índices para uma aplicação que contém estas (e possivelmente muitas outras…)
cláusulas SQL?
Problema típico
Problema simples?
update venda
set valor = valor -1 where valor > 2375000;
Índices ajudam ou atrapalham?
O povo diz: “ índices são bons para consultas e ruíns
para atualizações ”
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 7/80
Princípios de Sintonia (Shasha)
Pensar globalmente, fixar localmente
80 x 20: qual consulta é responsável?
Particionar para resolver gargalos
Espaço, transações
Start-up tem custo alto, execução não
Orientado a conjuntos!
Ao servidor o que é do servidor
triggers
Esteja pronto para trade-offs
Cobertor curto!
Problemas de sintonia
Seleção de índices Alocação de dados
Controle de carga (ajuste de MPL) Política de substituição de páginas em
memória
Ajuste de tamanhos/quantidades de buffers
Refino automático de estatísticas
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 9/80
Sintonia fina
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.
O que é preciso saber?
A atividade de tuning envolve:
Hardware e sistemas operacionais
Gerência de memória e acesso a discos
Controle de concorrência e recuperação
Uso de índices adequados
Otimização e reescrita de consultas
Projeto de banco de dados adequado
Ajuda conhecer SGBDs específicos!
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 11/80
Auto-Sintonia (Self-Tuning)
Capacidade de auto-ajuste dos SGBDs ao ambiente existente para obtenção de melhor desempenho
Alguns SGBDs comerciais possuem
implementação de algumas características Trabalhos científicos: além dos índices
e.g. projeto físico, memória, ...
Tuning vs Self-tuning
Sistemas de bancos de dados se tornam cada vez mais utilizados (commodity?) Sistemas de bancos de dados exigem
profissionais especializados para a sua administração
DBAs com anos de experiência podem levar anos e não resolver um problema!
“Será o fim do DBA” (SQLmag #8)
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 13/80
Self-tuning
Um grande (e já antigo!) desafio para a
comunidade acadêmica: tornar os sistemas computacionais mais autônomos
Asilomar Report on Database Research (1998)
IBM’s Autonomic Computing Manifesto (2001)
The Claremont Database Research Self- Assessment Meeting (2008)
Self-* Databases
Por que não automatizar ainda mais?
Self-tuning histograms
Self-healing
Automatic storage
Cloud Data Self-Manageability
…
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 15/80
Agenda
o Introdução e Motivação
o Fundamentos para Sintonia Fina
o
Planos e Métodos de Acesso
o
Operadores Relacionais e Reescrita de Consultas
o Self-tuning
o
Visão Geral do Estado da Arte
o
Abordagens DI @ PUC-Rio
o Comentários Finais
Planos de Execução
É o resultado da otimização
É especificado no plano de execução:
Ordem de acesso às tabelas
Ordem de operações
seleção, projeção e junção
Índices utilizados
Tipos de junção
Ordenações
Tabelas intermediárias
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 17/80
QEP: Query Execution Plan
Exemplo:
SELECT endereço, data-nascimento FROM empregado
WHERE nome = ‘Chico Cesar’
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)
Métodos de Acesso
Tipos básicos de operação:
Varreduras seqüenciais (full scan)
Indexadas (index scan)
Implementação de operadores
Junções,
Uniões
Ordenações e eliminação de duplicatas
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 19/80
Junções
Principais algoritmos:
Laços Aninhados (Nested Loops Join)
Ordenação/Intercalação (Merge Join)
Hashing (Hash Join)
Nested Loops
60 50 40 30 20 10
T1 Outer Table
70 60 50 20 20 05
70
T2
Inner Table
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 21/80
Merge Join
60 50 40 30 20 10
Outer Table
70 60 50 20 20 05
70
Inner Table
O rde na da O rde na da
Hash Join
60 50 40 30 20 10
Outer Table 70 60 50 20 20 05
70 Inner Table Build Phase
f(chave)
10
20 50 30 40
60
Probe Phase
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 23/80
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, pode ser ainda mais cara!
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
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 25/80
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
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
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 27/80
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
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.
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 29/80
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
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
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 31/80
Tuning
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:
podem afetar todo o sistema!
Reescrita (1/5)
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
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 33/80
Reescrita (2/5)
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
Reescrita (3/5)
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!!!
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 35/80
Reescrita (4/5)
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
---
| Operation | Name | Rows | Bytes| Cost ---
| SELECT STATEMENT | | 100K| 2M| 937
| SORT UNIQUE | | 100K| 2M| 937
| TABLE ACCESS FULL |EMPREGADO | 100K| 2M| 102
Reescrita (5/5)
Exemplo Oracle:
select distinct ident, nome from empregado;
select ident, nome from empregado; Custo = 102
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 37/80
Outras Atividades de Tuning
Uso de hints
Cuidadoso!
Operações vs instruções SQL:
E.g. distinct --> internal sort Ausência de PKs e/ou FKs
Full scan only
Ainda Atividades e Causos
Projeto físico:
Clusterização + indices invertidos
Mudança na estrutura de persistência
Independência física!
Ferramentas de apoio ao DBA
E.g. Veritas, Quest
Monitoramento, alertas, consoles gráficos...
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 39/80
Técnicas de Sintonia
Métodos 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
...
Agenda
o Introdução e Motivação
o Fundamentos para Sintonia Fina
o
Planos e Métodos de Acesso
o
Operadores Relacionais e Reescrita de Consultas
o Self-tuning
o
Visão Geral do Estado da Arte
o
Abordagens DI @ PUC-Rio
o Comentários Finais
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 41/80
Self-Tuning de índices
Tuning de índices:
Índices podem auxiliar em consultas
Índices podem ser prejudiciais a atualizações
Quais índices criar?
No self-tuning, dificuldade adicional:
quando criar ou destruir?
Sistemas Auto-sintonizáveis por Projeto
RISC-style Database System
Autores: Chaudhuri (Microsoft, AutoAdmin) e Weikum (Universidade de Saarland)
Idéia de criar sistemas de bancos de dados com componentes menores, especializados
Exemplo: gerente de dados com capacidade SPJ (select-project-join)
Apenas position paper
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 43/80
Sistemas Auto-sintonizáveis por Projeto
Projeto COMFORT
ETH em cooperação com UBS
Observar-predizer-reagir
Modelagem formal para determinar métricas
Auto Tune
IBM T. J. Watson Research Centre
Agente para controle inteligente
Independente da tecnologia monitorada
Seleção de Índices
Várias gerações de soluções:
Escolha através de regras especializadas (Rozen & Shasha, outros)
Criação de configurações de índices virtuais e uso do otimizador para custeamento
(Microsoft Index Wizard, muitos outros)
Enumeração de índices virtuais e uso do
otimizador para escolha (DB2 Index Advisor)
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 45/80
Alocação de Dados
Mudanças nos padrões de acesso aos dados pode sobrecarregar discos ou nós de
processamento
A idéia é mover arquivos ou fragmentos de arquivos dinamicamente entre os nós de processamento
Vistas propostas para sistemas shared nothing (p.
ex., clusters de PCs, aB+-Tree) e sistemas shared memory (p. ex., arrays de discos; projeto COMFORT, disk cooling)
Controle de Carga
Num sistema que usa locks, muitas transações concorrentes podem causar conflitos que levam a uma redução da vazão do sistema
A idéia é ajustar dinamicamente o MPL do sistema
Observação de métrica de conflitos (projeto
COMFORT, conflict ratio)
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 47/80
Substituição de páginas
Será LRU a melhor política de substituição de páginas para todas as variações de carga de trabalho?
A idéia é entender quais páginas ficam mais populares à medida que a carga de trabalho no sistema varia
LRU-K: P. O’Neil, E. O’Neil, G. Weikum (projeto COMFORT)
2Q: melhoria de desempenho de LRU-K, proposta por Johnson e Shasha
Ajuste de Buffers
Alguns sistemas permitem que criemos vários buffer pools, com diferentes objetos (tabelas, índices) associados a cada um
Como dividir os objetos em buffer pools de forma a melhorar o desempenho? É possível fazer isto dinamicamente?
Configuração e seleção de tamanho de buffer
pools para o DB2
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 49/80
Refino de estatísticas
Estatísticas são um fator determinante da qualidade dos planos escolhidos por
otimizadores de custo
A idéia é atualizar as estatísticas do sistema com base no resultado de consultas que estão sendo executadas
Microsoft Self-tuning Histograms
DB2 LEO – LEarning Optimizer
Self-Tuning Cases
Pausa para Exemplos (com “FILMES”)
Oracle ADDM
SQL Server
PostgreSQL by DI PUC-Rio
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 51/80
Estado da Arte
Visão geral
Tema não tão novo (Stonebreaker, 74)
Ajuste automático de índices apenas
Problema NP-hard (Shapiro, 83)
MS: projeto AutoAdmin
Chaudhuri + Narasayya (VLDB conf, 97)
Criação de índices hipotéticos
Seleção de índices candidatos
MS SQL7 index tuning wizard
MS SQL Wizard
Visões materializadas e particionamento “dividir e conquistar” para what-if
Workload adquirido
Conjunto de colunas úteis das tabelas
Seleção de candidatos
Merging
Enumeração de alternativas
Finalmente: recomendação ao DBA
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 53/80
Ex. SQL Server
Oracle ADDM
Dias e Benoit
Automatic Database Diagnostic Monitor Feedback loop control
Inspirado em Weikum + projeto Comfort
Estatísticas e observação
Diagnóstico: advisors (memória, espaço)
Dbtime graph: drill-down diagnóstico
E.g. raiz – capacidade I/O – dimensão buffer cache
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 55/80
IBM DB2
Lohman, Lightstone, Zilio Autonomic computing project Idéias principais:
Sem impacto na coleta de workload
LEO: LEarning Optimizer – compara estimativas com resultado da execução
Também feedback control loop
Virtual indexes
Pot-pourri
Adaptive query-processing (Paton et al)
Modificação dinâmica de planos Self-* storage (Ganger et al , CMU)
Administração automática para proteção, planejamento de capacidade, reparo, etc Self-tuning page cleaner (Wang,Bunt)
DB2 buffer pool
P2P indexing (Garcia-Molina)
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 57/80
Cloud Data: o que vem por aí?
Chaudhuri @ CIDR
Amazon’s SimpleDB, SQL Server Data Services Self-Manageability obrigatório!
Oportunidades:
API do servidor, Backend e Utilitários
Novos desafios:
Alta distribuição de dados
Workload imprevisível
Self-managing - sem “maintenance window
57
Self-tuning @ DI PUC-Rio
SGBD PostgreSQL (v7 e v8)
Primórdios: Rogério e idéia de agentes Heurística de seleção de índices
Índices hipotéticos com explain Captura automática de carga
Componente create, drop e reindex
Planos hipotéticos
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 59/80
Atividades de Self-Tuning
Coleta de informações (CI) – monitoramento do sub- sistema onde está sendo realizado a auto-sintonia;
Avaliação da situação (AS) – avaliação da necessidade de alterações no sistema considerando as medidas da etapa anterior e métricas relacionadas ao sistema;
Enumeração de possíveis alterações (EPA) – detectada ineficiência de um sub-sistema, são enumeradas possíveis alterações a serem realizadas;
Realização de alterações (RA) – a partir das
alternativas enumeradas, alterações nos mais diversos componentes do SGBD podem ser realizadas;
Trabalhos Correlatos
Projeto SMART (Self Managing and Resource Tuning) do Centro de Pesquisas IBM Almaden em parceria com os Laboratórios de Toronto e do Vale do Silício;
Projeto AutoAdmin da Microsoft Research;
Oracle;
PostgreSQL;
Grupo de auto-sintonia em SGBDs do Departamento de Informática PUC-Rio.
Índices Hipotéticos Survey Auto-Sintonia Global Heurística de DB2: db2advis
SQL Server 2005: Database Tuning Advisor Oracle 10g: Automatic
Database Diagnostic Monitor
Pg_autovacuum
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 61/80 Auto-sintonia de
bancos de dados
Auto-sintonia global Auto-sintonia local
Projeto
Físico Alocação de dados Controle
de carga Substituição de páginas Ajuste de
buffers Refino de estatísticas Auto-sintonia global
por construção Auto-sintonia global por adaptação
Possível Classificação
Índices hipotéticos
Pausa para tutorial extra:
(disponível em www.inf.puc-rio.br/~postgresql)
PostgreSQL by DI PUC-Rio
Referência ao filme anterior
Comandos create e drop hypothetical
Explain hypothetical
Ferramenta de what-if
PGcon2009: hacker talk
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 63/80
Self-Tuning
Modelo local
SGBD
Componente N
Componente N + 1
Componente M + 1 Área sendo
ajustada Avaliação de
métricas e alterações na
execução (AS e EPA)
Envio de informações sobre alteração na execução de tarefa (RA) Coleta de informações
preliminares (CI)
Coleta de informações sobre alterações (CI) Coleta de informações sobre execução final (CI) Componente de
Auto-Sintonia
Componente M
SGBDs baseados em Agentes
Três arquiteturas
Arquitetura Embutida SGBD Arquitetura Integrada
Arquitetura em Camadas
SGBD
Sistema de Agentes SGBD
Sistema de Agentes
Componentes
do SGBD
Sistema de Agentes
Lifschitz e Macedo, CLEI 2001
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 65/80
Agente em Camadas
Agentes de software
Autonomia: capacidade de agir para atingir um objetivo sem intervenção humana
Reatividade: capacidade de responder a mudanças para atingir objetivos;
Pró-atividade: agir para atingir seus objetivos, antecipando-se a mudanças no ambiente;
Sociabilidade: capacidade de
interagir com outros participantes do ambiente;
Sensor Ação Raciocínio Mobilidade
Colaboração Tradução
Crença
Agentes e Self-Tuning
Agente em camada e etapas do Self-tuning
Sensor Ação Raciocínio Mobilidade
Colaboração Tradução
Crença
Agente Etapas da
Auto-Sintonia Outras funcionalidades
Coleta de Informações Avaliação da Situação
e
Enumeração de Possíveis Alterações Realização de Alterações Decisões sobre colaboração
com outros agentes, preparação e envio de
mensagens.
Recebimento e análise prévia de mensagens de
outros agentes
Armazenamento de estatísticas, decisões
tomadas e crenças
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 67/80
Index Self-tuning based on Differences
On-line heuristic
Evaluate commands as they are submitted
Estimate alternative indexing solutions
hypothetical indexes
Adapt index design on-the-fly
Index Self-tuning e benefícios
Query Evaluation Strategy:
Benefit of Hypothetical Index = Cost of Query with Actual Indexes – Cost of Query with Hypothetical Indexes;
Update Accumulated Benefit of Hypothetical Index;
If (Accumulated Benefit of Hypothetical Index >
Cost to Create Hypothetical Index) Then
Reset Accumulated Benefit of Hypothetical Index;
Materialize Hypothetical Index;
End if;
Updates follow similar rules, but consider index
destruction
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 69/80
Agent based Self-tuning
Architectures
Agent architecture
Integration architecture Pros & Cons
Intrusive, but well delimited
On-line: no human intervention, but limited time to search solution space
Agent based Self-tuning
Integrando o agente de sintonia com PostgreSQL
Sensory Beliefs Reasoning
Action
Postgres Postgres
Queue
Storage Structures
Built-in Agent (Postgres)Postmaster
Statement
Processor Optimizer Statement Processor Optimizer
Statement Processor
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 71/80
Questões de implementação
Ciclo de uma operação
SGBD
Otimização do Plano de Acesso
Geração de código Agente de
Self-tuning Mobilidade
SGBD Query Rewrite
Otimização do Plano de Acesso
Geração de código Agente de
Self-tuning Sensor
SGBD Agente de Self-tuing
Crença Estatísticas
SGBD Agente de Self-tuning
Raciocínio
Tomada de decisão com possível enumeração de índices propostos ou decisões sobre imediata/posterior criação/destruição
de índices SGBD
Geração do Plano de Acesso Agente de
Self-tuning Mobilidade
Solicitação de montagem de plano
segundo uma dada configuração
Consulta
SGBDs baseados em Agentes e Self-Tuning
Sintonia global com agentes
SGBD
Troca de informações
Componente N
Componente N + 1
Componente M +1 Agente de
Self-tuning Local
Componente M
“Lembrança de
operações passadas”(dados persistentes) Gravação de dados
Leitura de dados
Área sendo ajustada Envio de informações a
outros agentes de Self-tuning Informações provenientes
de outros agentes de
Self-tuning
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 73/80
Arquitetura Sintonia Global
Questionamentos
Dada uma solicitação para criação ou destruição de um índice, agente de self- tuning de índices pode indicar que:
Nenhum índice é benéfico/ prejudicial para a consulta ou operação de atualização;
A criação/destruição de um índice já foi determinada e será realizada no momento adequado;
Índices já foram criados/destruídos antes da
solicitação ser recebida;
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 75/80
Trabalhos recentes
Reindex automático
Carga menos estável que TPC-C e mesmo assim resultados positivos
Uso de “evaluate”, “getsize” e “fillfactor”
Tudo isto: artigo SBBD 2009 trilha pesquisa Planos hipotéticos
tese J.M. Monteiro 2008
Heurísticas não-intrusivas
Agenda
o Introdução e Motivação
o Fundamentos para Sintonia Fina
o
Planos e Métodos de Acesso
o
Operadores Relacionais e Reescrita de Consultas
o Self-tuning
o
Visão Geral do Estado da Arte
o
Abordagens DI @ PUC-Rio
o Comentários Finais
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 77/80
Comentários Finais
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?
Trabalhos em curso e futuros
Ajuste fino de índices hipotéticos Acompanhamento de auto-sintonia
Visualização de hipotéticos
Iminência de criação
Ferramenta de planos hipotéticos Patch para PostgreSQL
Uso em BD reais e volumosos
Versão 8.x e benchmarks públicos
Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 79/80