• Nenhum resultado encontrado

Self ou Auto-tuning?

N/A
N/A
Protected

Academic year: 2022

Share "Self ou Auto-tuning?"

Copied!
40
0
0

Texto

(1)

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?

(2)

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

(3)

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 ”

(4)

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

(5)

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!

(6)

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)

(7)

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

(8)

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

(9)

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

(10)

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

(11)

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

(12)

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

(13)

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

(14)

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.

(15)

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

(16)

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

(17)

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!!!

(18)

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

(19)

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...

(20)

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

(21)

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

(22)

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)

(23)

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)

(24)

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

(25)

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

(26)

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

(27)

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

(28)

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)

(29)

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

(30)

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

(31)

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

(32)

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

(33)

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

(34)

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

(35)

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

(36)

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

(37)

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;

(38)

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

(39)

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

(40)

Self-Tuning e outros Self-* em SGBDs Sérgio Lifschitz DI PUC-Rio Tutorial SBBD 20009 79/80

Agradecimentos

Ana Carol, Andrea e Zé Maria

&

Rogério Costa, Maíra, Marcos Salles, Anolan, Morelli, Isabel

+ Angelo, Javam e Marcus Sampaio

www.inf.puc-rio.br/~postgresql

Perguntas?

OBRIGADO!

Este tutorial é dedicado à memória do professor e

amigo Mauro Biajiz

Referências

Documentos relacionados

Figura 1.1 – Transformador ligado a um sistema MRT para um consumidor [6]. O sistema MRT se baseia na implantação de uma das mais conhecidas técnicas utilizadas no

Use o cabo de fones estéreo fornecido para conectar a tomada de saída no bloco da série XP à tomada de entrada no Módulo Acionador de Bateria da série DTX.. Insira o conector em

Há aqui o que Maingueneau (2005: 33) identifica como o primado do interdiscurso, “que amarra, numa relação inextrincável, o Mesmo do discurso e seu Outro”. Contudo, esse Outro não

Para isso, se utiliza as estruturas teóricas da Organização Industrial (OI) e da New Empirical Industrial Organization (NEIO) na análise dos dados empíricos do MASM em nível

A administração de baixas doses (≤ 4mmol/Kg.dia), em ratos tratados com estrôncio, não causou efeitos tóxicos nas células ósseas ou na mineralização óssea; mas, quando foram

Esses percentuais, além do fato de que 60,6% dos entrevistados priorizarão o pagamento de dívidas no próximo semestre (e não a compra de bens), nos fazem afirmar que ocorrerá

A morfologia, que é o cerne de sua obra, apresenta distinções fundamentais que perduram: entre palavras variáveis e invariáveis, estabelece categorias secundárias para

“Uma empresa tem uma vantagem competitiva se for capaz de criar mais valor econômico do que o concorrente marginal (breakeven) em seu mercado de produto.... O valor econômico