RDBMS Tuning Pedro da Silva. Indice 1. Schema Tuning 1.1. Vertical Partitioning 1.1. Vertical Partitioning 1.2. Tunnig Denormalization 1.2. Tunnig Denormalization.

Slides:



Advertisements
Apresentações semelhantes
O Comando DROP INDEX Para eliminar um índice definido sobre uma tabela, utilize: Drop Index on ; Ex: No Access: Drop Index X on.
Advertisements

SQL Avançado Continuação
SQL Structured Query Language
SQL Structured Query Language (continuação)
SQL Structured Query Language (continuação)
Banco de Dados SQL TRIGGERS (Gatilhos)
SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados I 2º Semestre – 2010 Pedro Antonio Galvão Junior Fone:
Data Warehouse Tuning O que é um Data Warehouse? Índices Bitmap
Trabalho de Desenvolvimento
Visões Marilde Santos.
Otimização de Consultas em SQL Parte I - Planos de Execução e Equivalências de Expressões da Álgebra Relacional AULA 19 Profa. Sandra de Amo Programa.
Otimização de Consultas em SQL Planos de Execução e Equivalências de Expressões da Álgebra Relacional AULA 24 Profa. Sandra de Amo GBC053 – BCC
Daniel J. Abadi – Yale - New Haven, USA Samuel R. Madden – MIT – Cambrigde, USA Nabil Hachem – Avantgarde Consulting – Shrewbury, USA SIGMOD '08 Apresentado.
Hierarquia de Visões de Objeto
SQL – Noções Gerais Por Márcia Jacyntha N. Rodrigues Lucena
Oficina sobre banco de dados
SCC Bancos de Dados e Suas Aplicações
Eduardo Costa Gabriel Cypriano Rodrigo Calhau
Banco de dados Profª Kelly Medeiros.
PostgreSQL.
Modelo Relacional Uma base de dados é Uma relação é
©Silberschatz, Korth and Sudarshan (modificado)5.1.1Database System Concepts Capítulo 5: Outras linguagens Query-by-Example (QBE) Datalog.
Geração de Planos de Execução Planos para Consultas Aninhadas
SQL Álvaro Vinícius de Souza Coêlho
Trabalho de Desenvolvimento Processamento/Optimização de Querys.
Tuning Lílian Simão Oliveira.
Modelo E-R no Rational Rose
Desenvolvendo um script SQL
Rafael Lucio, Desenvolvedor Jr Padrão Informática e Assessor de TI Secretaria Municipal da Saúde;
VIEW - VISÕES Professor Esp. Diego André Sant’Ana
Linguagem de Definição de Dados
Criação de Tabelas. CREATE TABLE nome_da_tabela ( >>. >> ) Ex.: SQL SERVER 2008 CREATE TABLE pessoa ( CPF VARCHAR(11) NOT NULL, NOME VARCHAR(100) NOT.
Baseado no material do Professor Raul Paradeda
Comandos SQL.
REVISÃO Comandos SQL - DML SELECT * FROM ?.
Linguagem de Manipulação de Dados. 2 Conteúdos Introdução ao SQL Comando SELECT – Extracção de Dados  Pesquisas Simples  Restrições na pesquisa de dados.
Query processing in main memory Vitor Silva. Bibliografia “Query Processing in Main Memory Database Management Systems” - Tobin J. Lehman & Michael J.
©Silberschatz, Korth and Sudarshan (modificado)4.1.1Database System Concepts Capítulo 4: SQL Estrutura básica Operações com conjuntos Funções de agregação.
Banco de dados O que é MySQL Criar bando de dados
SQL- Structured Query Language  SQL é uma linguagem de comandos para interagir com uma BD relacional (não é case-sensitive).  A linguagem Java permite.
©Silberschatz, Korth and Sudarshan (modificado)7.3.1Database System Concepts Capítulo 7: Design de Bases de Dados 1ª Forma Normal Objectivos com Design.
Aula 17 – Otimização Modelo Relacional
AULA DE DÚVIDAS 9 de Abril de Especialização  Simplifica-se quando:  especialização é disjunta e  especialização é total e  não há relações.
©Silberschatz, Korth and Sudarshan (Modificado)1.1Database System Concepts Capítulo 1: Introdução Função dos Sistemas de Bases de Dados Visão dos dados.
©Silberschatz, Korth and Sudarshan (modificado)9.1.1Database System Concepts Capítulo 9: BDs Objecto-Relacional Relações imbricadas Tipos complexos e objectos.
©Silberschatz, Korth and Sudarshan (Modificado)3.1.1Database System Concepts Capítulo 3: Modelo Relacional Estrutura das Bases de Dados Relacionais Redução.
Banco de Dados I I Comandos SQL
Fundamentos de Banco de Dados Fundamentos de Banco de Dados Prof. Gale 2º. Semestre 2008.
©Silberschatz, Korth and Sudarshan (modificado)4.2.1Database System Concepts Capítulo 4: SQL Estrutura básica Operações com conjuntos Funções de agregação.
©Silberschatz, Korth and Sudarshan (modificado)9.2.1Database System Concepts Capítulo 9: BDs Objecto-Relacional Relações imbricadas Tipos complexos e objectos.
Structured Query Language
IEC Banco de Dados I Aula 04 – SQL (II) Turmas: Sistemas de Informação Professora: André Luiz da Costa Carvalho
©Silberschatz, Korth and Sudarshan (modificado)7.3.1Database System Concepts Capítulo 7: Design de Bases de Dados 1ª Forma Normal Objectivos com Design.
PostgresSQL Optimização de Interrogações Francisco Santos.
Correcção do 4º Mini-Projecto AOBD Pergunta 1 /* T1: 1 transacção por hora */ BEGIN TRANSACTION select avg(lugares_disponíveis) from ( select.
AOBD 07/08 Mini-Projecto 2 Soluções. 1) Considere que existem três relações R1=(A,B,C), R2=(C,D) e R3=(D,E) com chaves primárias A, C e D, respectivamente.
Optimização - 1 Optimização de perguntas 1 Processamento de selecções 2 Processamento de junções 3 Manipulação algébrica.
1 Structured Query Language (SQL) 4 SQL é uma linguagem normalizada (ANSI) para consultas e actualizações de bases de dados relacionais.
1 Introdução à Manipulação de Dados SQL – Structured Query Language  Tabela = Relação  DDL – Data Definition Language  Sub-conjunto do SQL que suporta.
PostgreSQL Índices Nuno Campos N.º Nuno Campos - N.º Índice Introdução Tipos de Índices – B-Tree – R-Tree – Hash – GiST Classes de Operadores.
Objetos em Bancos de Dados Relacionais Alcides Calsavara.
Daniel Paulo Introdução Neste capítulo trataremos a relação entre tabelas e FILEGROUPS, bem como a alocação interna de dados.
Aula 09: Comando SELECT: Ligações entre tabelas e Subconsultas
Introdução a Banco de Dados
Banco de Dados -Aprendendo conceitos -Usando o SQL Conf para:
1 Programação de Banco de Dados José Antônio da Cunha George Azevedo da Silva.
PROJETO INTERDISCIPLINAR ‘DBERP’. Equipe de Desenvolvimento Banco de Dados  Adiel Silveira de Lemos  Ana Renata de Siqueira  Bruno Michael da Silva.
Programação para Internet Aula 11 SQL (Introdução a linguagem, comandos de modificação: Create, Drop, Alter, Insert, Delete, Update)
José Antônio da Cunha 3/6/2016 José Antônio - CEFET-RN 1 Copyright © Dale Carnegie & Associates, Inc.
Copyright © 2011 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Capítulo 5 Mais SQL: Consultas Complexas, Triggers e Views.
Transcrição da apresentação:

RDBMS Tuning Pedro da Silva

Indice 1. Schema Tuning 1.1. Vertical Partitioning 1.1. Vertical Partitioning 1.2. Tunnig Denormalization 1.2. Tunnig Denormalization 2. Query Tuning 2.1. Query Monitoring 2.1. Query Monitoring 2.2. Query Rewriting 2.2. Query Rewriting

Schema Tunning - Introdução Qual o melhor esquema? Compra(keyFornecedor, keyPeça, quantidade, moradaFornecedor) Compra(keyFornecedor, keyPeça, quantidade, moradaFornecedor) Compra(keyFornecedor, keyPeça, quantidade) Compra(keyFornecedor, keyPeça, quantidade) Fornecedor(keyFornecedor, moradaFornecedor) Resposta: DEPENDE (Espaço? Informação? Performance?) (Espaço? Informação? Performance?)

Vertical Partitioning Contexto: Cada conta tem associada uma morada e um saldo Dois esquemas possíveis: Conta(keyConta, morada, saldo) Conta(keyConta, morada, saldo) Saldos(keyConta, saldo) Saldos(keyConta, saldo) MoradasContas(keyConta, morada) Se o saldo é acedido/actualizado muito frequentemente então o segundo esquema é melhor

Vertical Partitioning - Resumo A Partição Vertical é positiva se: O acesso não se dirige principalmente aos dois atributos O acesso não se dirige principalmente aos dois atributos SELECT morada, saldo FROM conta Os dois atributos têm valores muito extensos Os dois atributos têm valores muito extensos Partitioning vs No Portitioning

Vertical Partitioning - Resumo A Partição Vertical melhora a performance quando a quantidade de query’s a aceder apenas a dois atributos é maior que 20%

Vertical Antipartitioning É uma boa solução em casos onde é sabido haver muitos mais acessos a uma pequena parte dos registos associados Contexto: Os 5 últimos movimentos são mais importantes: Conta(keyConta, saldo, morada, movimento1, movimento2,..., movimento5) Conta(keyConta, saldo, morada, movimento1, movimento2,..., movimento5) Movimentos(keyConta, movimento)

Tuning Denormalization Contexto: Cada conta pertence a um cliente, o qual reside numa região Conta(keyConta, saldo, ultimoMovimento, keyCliente) Conta(keyConta, saldo, ultimoMovimento, keyCliente) Cliente(keyCliente, nome, keyRegião) Região(keyRegião, região, clima) Com o esquema anterior uma query para mostrar as contas e a região das mesmas torna- se pesada (3 JOINS) Solução desnormalizada: Conta(keyConta, saldo, ultimoMovimento, keyCliente, região) Conta(keyConta, saldo, ultimoMovimento, keyCliente, região)

Tuning Denormalization - Resumo Desnormalização significa violar a normalização do esquema para aumentar a performance Este método aumenta a performance quando, muitas vezes, os atributos de várias tabelas normalizadas são acedidos conjuntamente A performance é deteriorada quando existem muitos updates

Query Monitoring Duas formas de identificar uma query lenta: Acede a demasiada informação em disco (uma query pontual que percorre toda a tabela – table scan) Acede a demasiada informação em disco (uma query pontual que percorre toda a tabela – table scan) SELECT * FROM Conta WHERE bi = O plano de execução (escolhido pelo Optimizador) recorre a índices pouco produtivos. O plano de execução (escolhido pelo Optimizador) recorre a índices pouco produtivos.

Query Rewriting - Índices Muitos dos Optimizadores não usam índices quando existem: Expressões Aritméticas Expressões Aritméticas (WHERE salario/12 >= 400) Expressões com Substrings Expressões com Substrings (WHERE SUBSTR(nome, 1, 1) = ‘P’ Comparações numéricas entre atributos de tipos diferentes Comparações numéricas entre atributos de tipos diferentes Comparações com NULL Comparações com NULL Utilizar índices esparsos nas condições dos JOINS é uma boa ideia.

Query Rewriting – DISTINCT’s Eliminar DISTINCTS desnecessários SELECT DISTINCT keyEmpregado SELECT DISTINCT keyEmpregado FROM Empregado WHERE departamento = ‘Pesca‘ Generalizar a relação entre DISTINCTS, keys e joins Denominar uma tabela T privilegiada se o SELECT retorna algum atributo chave de T Denominar uma tabela T privilegiada se o SELECT retorna algum atributo chave de T R é uma tabela não privilegiada. Denominar R alcança S se R for unida (JOINED), por igualdade da sua chave, com a tabela S R é uma tabela não privilegiada. Denominar R alcança S se R for unida (JOINED), por igualdade da sua chave, com a tabela S Definir que alcança é transitivo (se R1 alcança R2 e R2 alcança R3 então R1 alcança R3. Definir que alcança é transitivo (se R1 alcança R2 e R2 alcança R3 então R1 alcança R3.

Query Rewriting – DISTINCT’s Não haverão duplicados, mesmo sem o DISTINCT, se uma das seguintes condições se verificar: Todas as tabelas mencionadas no FROM são privilegiadas Todas as tabelas mencionadas no FROM são privilegiadas Todas as tabelas não privilegiadas alcançam pelo menos uma tabela privilegiada Todas as tabelas não privilegiadas alcançam pelo menos uma tabela privilegiada

DISTINCT - Exemplos Exemplo 1: SELECT numEmpregado SELECT numEmpregado FROM Empregado, TecDpt WHERE Empregado.keyDpt = TecDpt.keyDpt Tabela Empregado é privilegiada Tabela TecDpt alcança a tabela Empregado Exemplo 2: SELECT Estudante.bi SELECT Estudante.bi FROM Estudante, Empregado, TecDpt FROM Estudante, Empregado, TecDpt WHERE Estudante.mome = Empregado.nome WHERE Estudante.mome = Empregado.nome AND Empregado.keyDpt = TecDpt.keyDpt Estudante é privilegiada Empregado não alcança Estudante (nome não é key) DISTINCT é necessário para evitar duplicados

Abuse of Temporaries Contexto: Encontrar todos os empregados e a sua localização, do departamento de Informática com salário superior a 40000€ INSERT INTO Temporaria INSERT INTO Temporaria SELECT * FROM Empregado WHERE salario >= SELECT bi, localização SELECT bi, localização FROM Temporaria WHERE Temporaria.departamento = ‘Informática’ A selecção deveria ter sido efectuada na ordem inversa A tabela temporária “enganou” o Optimizador

Use of Views A utilização de Views, só por si, não produz incremento de performance CREATE VIEW TecnicoLocalizacao CREATE VIEW TecnicoLocalizacaoAS SELECT bi, Tecnico.departamento, localização FROM Empregado, Tecnico WHERE Empregado.departamento = Tecnico.departamento SELECT localização SELECT localização FROM TecnicoLocalizacao WHERE bi = Os Optimizadores expandem as vistas quando são identificados os blocos das querys para serem Optimizados

Use of Views A query à TecnicoLocalizacao é traduzida num JOIN SELECT localizacao SELECT localizacao FROM Empregado, Tecnico WHERE Empregado.departamento = Tecnico.departamento AND bi =

Bibliografia “ Database Systems and Concepts”, Silbertchatz, Korth and Sudarshan, p?topic=/com.ibm.db2.udb.doc/admin/c htm en-us/optimsql/odp_tun_1_3nxv.asp