Mini-Projecto 3 AOBD – 2007/2008.

Slides:



Advertisements
Apresentações semelhantes
Otimização de Consultas em SQL Estimativas de Custos
Advertisements

Introdução Gdes. bancos de dados: Concorrência: Transação:
Sistema de recuperação
WebDesign Redes de Computadores Aula 07
Banco de Dados Prof. Antonio.
Requisitos dos SGBD Recuperação/Tolerância a Falhas
SQL Structured Query Language (continuação)
Aula 3 Requisitos dos SGBD
SQL Structured Query Language (continuação)
SISTEMAS DE INFORMAÇÃO Sistemas de Bancos de Dados I 2º Semestre – 2010 Pedro Antonio Galvão Junior Fone:
Recuperação Como garantir a integridade da informação, em caso de avarias de HW ou SW forma de suportar a reposição de um estado consistente da informação.
Bloqueios partilhados
Gestão de transacções noções básicas modelo simples modelo elaborado
1 Gabriel David FEUP - Rua dos Bragas, 4099 Porto Codex - PORTUGAL Tel Fax: URL:
Bases de Dados 2 José Júlio Alferes Departamento de Informática
Transações Atômicas Distribuídas
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.
Algoritmos para Projeção eliminando Duplicatas
Algoritmos para Seleção Simples AULA 16 Profa. Sandra de Amo GBC053 – BCC
Algoritmos para Seleção e Projeção
AULA 23 Profa. Sandra de Amo GBC053 – BCC
Algoritmos para Projeção e Operações de Conjuntos AULA 22 Profa. Sandra de Amo GBC053 – BCC
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
Sumário 1 SQL Embutida 2 Processamento de Consultas
Banco de Dados Oracle AESO.
RECUPERAÇÃO APÓS FALHA
Buscas em Grafos Prof. André Renato 1º Semestre/2012
Query Tuning Lílian Simão Oliveira.
Aula prática 6 Vetores e Matrizes
Aula 03 – BCC202 Análise de Algoritmos (Parte 1) Túlio Toffolo www
Tuning Lílian Simão Oliveira.
INTRODUÇÃO ÁS BASES DE DADOS
Otimização de Consultas em SQL Planos de Execução
SISTEMAS DE GERENCIAMENTO DE BANCO DE DADOS Hélder Lima e Silva - hmls
Introdução e Busca Cega
Fiabilidade de Sistemas Informáticos Acções Atómicas
Controle de concorrência
Algoritmos para Operação de Junção Loops Aninhados AULA 17 Profa. Sandra de Amo GBC053 – BCC.
Universidade da Beira Interior Fiabilidade de Sistemas Informáticos Nuno Magarreiro n.º
Capítulo 7: Deadlocks.
Conceitos Programas Programação Linguagens de Programação SQL.
REVISÃO Comandos SQL - DML SELECT * FROM ?.
Transações Concorrentes
System R Recovery System Vitor Silva. Tópicos O System R System R Recovery System Shadows Log Protocolo Do, Undo, Redo CheckPoints Reinício do Sistema.
Assunto: Transações concorrentes, Disciplina: Banco de dados II, profa. Cristina Paludo Max W. Ourique Ranieri R. Tremea
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.
©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.
Falhas.
AULA 20 Profa. Sandra de Amo GBC053 – BCC
Algoritmos para Operações Binárias entre blocos SQL AULA 19 – Parte I Profa. Sandra de Amo GBC053 – BCC.
©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 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.
Fundamentos de Banco de Dados Fundamentos de Banco de Dados Prof. Gale 2º. Semestre 2008.
Controle de Concorrência
Algoritmos de Junção – IndexNL e Sort Merge Join AULA 19 Profa. Sandra de Amo GBC053 – BCC.
Algoritmos para o operador de Projeção AULA 19 – Parte II Profa. Sandra de Amo GBC053 – BCC.
PostGres - Transacções
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 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.
Transações Banco de Dados II Aline S Costa 1. TRANSAÇÕES Conjunto de operações que formam uma única unidade lógica de trabalho; Conjunto de instruções.
Algoritmos de Junção – Sort Merge Join e Hash Join
Aula 09: Comando SELECT: Ligações entre tabelas e Subconsultas
Microsoft SQL Server Instruções para instalação/ recuperação de bancos de dados no SQL Server.
Algoritmos para Seleção AULA 23 Profa. Sandra de Amo GBC053 – BCC.
Weyler N M Lopes © Especialização em Banco de Dados Página 1 BANCO DE DADOS AULA - 07.
M Fernando Forte2005 TRANSACÇÕES HSQL - Hypersonic SQL TECNOLOGIA DE BASES DE DADOS.
MySQL STORAGE & TRANSACTIONs Pedro da Silva. Índice 1. Storage 1.1. Tabelas MyISAM 1.1. Tabelas MyISAM 1.2 Tabelas InnoDB 1.2 Tabelas InnoDB 2. Transactions.
Transcrição da apresentação:

Mini-Projecto 3 AOBD – 2007/2008

1 - Considere o esquema simplificado (i. e 1 - Considere o esquema simplificado (i.e. não foram incluídos os nomes de todos os atributos) das seguintes tabelas na base de dados AdventureWorks e ainda a seguinte interrogação SQL. Purchasing.Vendor(VendorID,Name)‏ Purchasing.PurchaseOrderHeader(PurchaseOrderID, VendorID)‏ Purchasing.PurchaseOrderDetail(PurchaseOrderDetailID,PurchaseOrderID,ProductID)‏ Production.Product(ProductID,Name,ListPrice)‏ SELECT V.Name, P.Name FROM Purchasing.Vendor V, Production.Product P, Purchasing.PurchaseOrderHeader OH, Purchasing.PurchaseOrderDetail OD WHERE V.VendorID=OH.VendorID AND OH.PurchaseOrderID=OD.PurchaseOrderID AND OD.ProductID=P.ProductID AND V.Name=’Norstan Bike Hut’ AND P.ListPrice <=1000;

Considere um optimizador semelhante ao introduzido nas aulas teóricas (i.e. Sistema R da IBM). Indique quais as ordenações possíveis para as junções presentes na interrogação, assumindo que o optimizador iria descartar planos de execução envolvendo produtos cartesianos. Apenas planos left-deep seriam permitidos: ((V |x| OH ) |x| OD) |x| P ((P |x| OD ) |x| OH) |x| V ((OD |x| OH ) |x| V) |x| P ((OD |x| OH ) |x| P) |x| V Uma vez que o optimizador do sistema-R iria tentar mover as selecções para as folhas da árvore do plano de execução, os dois primeiros casos seriam os mais prováveis de ser considerados, optando-se entre eles de acordo com a selectividade das condições de selecção dadas sobre V e P.

b) Qual a informação sobre estas relações que um optimizador iria necessitar para poder escolher um bom plano de execução para a interrogação. Justifique a sua resposta. Para estimar o custo, o optimizador iria necessitar de informação tal como quais os índices existentes (e o seu tipo) sobre os atributos envolvidos nos joins e selecções. Iria também necessitar de estatísticas sobre as tabelas em questão, tais como os valores mínimo e máximo dos índices e a distribuição dos valores, por forma a calcular a selectividade das condições involvidas nas selecções.

projection((( selection(V) |x| OH ) |x| OD) |x| selection(P))‏ c) Com a informação que tem, indique um possível plano de execução eficiente para a interrogação, indicando os algoritmos escolhidos a cada passo e justificando a sua escolha. Não é dada informação sobre o tamanho de cada relação ou sobre a selectividade das operações de selecção envolvidas. Assumindo que a condição de igualdade seria mais selectiva que a selecção de um intervalo, um plano eficiente poderia ser projection((( selection(V) |x| OH ) |x| OD) |x| selection(P))‏ As selecções podem explorar índices, caso estes existam, e caso contrário seriam calculadas usando um full-table scan. Os algoritmos de join iriam depender da existência de índices sobre os atributos de join, por exemplo indices B+ tree sobre os atributos do join podiam ser interessantes para o algoritmo de join sort-merge.

d) Que índices, e que tipo de índice, poderiam ser úteis para o processamento desta interrogação. Um indice clustered do tipo B+tree seria útil para a selecção pelo intervalo. Um índice hash em V.name seria util para a condição de igualdade. Índices sobre os atributos dos joins seriam provavelmente úteis na selecção de um algoritmo de join mais eficiente.

e) Como iria o plano de execução da alínea anterior ser alterado, aquando da introdução de um clausula i) DISTINCT, ii) ORDER BY P.Name ou iii) GROUP BY P.Name na query. i) Para suportar a operação DISTINCT, devemos ordenar os resultados (excepto se estes já se encontrarem numa ordem pretendida) e pesquisar pelas ocorrências diferentes. Num optimizador do tipo do sistema-R, a determinação do plano de execução iria levar em conta o facto dos resultados virem um não numa ordem interessante. ii) A operação ORDER BY teria efeitos similares aos da pergunta anterior. O optimizador iria considerar planos de execução que deixassem, como efeito secundário, os resultados ordenados por P.name, ou então iria explicitamente ordenar os resultados por P.name. iii) A operação GROUP BY P.name requer que se ordenem os resultados dos operadores anteriores por P.name por forma a posteriormente se calcularem os agregados sobre os conjuntos de tuplos com o mesmo valor para P.name. Mais uma vez, o optimizador iria considerar planos de execução que deixassem, como efeito secundário, os resultados ordenados por P.name.

2. Considere o seguinte escalonamento para transacções concorrentes.

a) Liste todos os conflitos que podem ocorrer no escalonamento de transacções apresentado. Em T1, R1(a) entra em conflito com W3(a)‏ Em T4, R4(a) entra em conflito com W3(a)‏ Em T2, W2(b) entra em conflito com W3(b),W5(b)‏ Em T5, R5(c) entra em conflito com W4(c)‏ Em T3, W3(a) não apresenta conflitos Em T3, W3(b) entra em conflito com W5(b)‏ Em T2, R2(c) entra em conflito com W4(c)‏ Em T5, W5(b) não apresenta conflitos Em T2,W2(d) entra em conflito com R1(d)‏ Em T4, W4(c) não apresenta conflitos Em T1, R(d) não apresenta conflitos

b) Construa o grafo de precedências para o escalonamento apresentado. O grafo iria conter um nó para cada transacção e os seguintes arcos: De T1 para T3 (R1(a) e W3(a)) De T2 para T1 (W2(d) e R1(d)‏) De T2 para T3 (W2(b) e W3(b))‏ De T2 para T4 (R2(c) e W4(c)‏)‏ De T2 para T5 (W2(b) e W5(b)‏)‏ De T3 para T5 (W3(b) e W5(b)‏)‏ De T4 para T3 (R4(a) e W3(a)‏)‏ De T5 para T4 (R5(c) e W4(c))‏ T2 T1 T5 T3 T4

c) O escalonamento apresentado é conflict-serializable c) O escalonamento apresentado é conflict-serializable? Justifique a sua resposta. Existe um ciclo: T5 -> T4 -> T3 -> T5. O escalonamento apresentado não é conflict-serializable.

d) Considere as instruções envolvidas no escalonamento apresentado d) Considere as instruções envolvidas no escalonamento apresentado. Coloque as instruções de trinco apropriadas, obedecendo ao protocolo 2PL. T1 - Lock-S(a); R1(a); Lock-S(d); R1(d); Unlock(d); Unlock(a); T2 – Lock-X(b); W2(b); Lock-S(c); R2(c); Lock-X(d); W2(d); Unlock(d); Unlock(c); Unlock(b)‏ T3 – Lock-X(a); W3(a); Lock-X(b); W3(b); Unlock(b); Unlock(a); T4 – Lock-S(a); R4(a); Lock-X(c); W4(c); Unlock(c); Unlock(a); T5 – Lock-S(c); R5(c); Lock-X(b); W5(b); Unlock(b); Unlock(c);

e) Diga o que entente por serializability e justifique se o protocolo de locking usado na alínea d garante esta propriedade. Um escalonamento (i.e. uma ordenação temporal para as operações das várias transacções) é serializável se apresenta a propriedade serializability property, i.e. se o seu resultado (i.e. os valores na base de dados) é igual ao resultado das mesmas transacções executadas sequencialmente sem sobreposição. O protocolo 2PL assegura conflict serializability, i.e. a equivalência com um escalonamento série com as mesmas transacções, tal que os dois escalonamentos tenham os mesmos conjuntos de operações em conflito cronologicamente ordenados.

f) Podem ocorrer deadlocks sob o resultado da alínea d f) Podem ocorrer deadlocks sob o resultado da alínea d? Justifique a sua resposta. O protocolo 2PL não oferece garantias sobre a não-ocorrência de deadlocks. Por exemplo, um deadlock iria ocorrer no seguinte escalonamento de operações obtido pela introdução de locks seguindo o protocolo 2PL. 1 : Lock-X(A)‏ 2 : Write(A)‏ 3 : Lock-X(B)‏ 4 : Write(B)‏ 5 : Lock-X(B)‏ 6 : Lock-X(A)‏ 7 : ... Num dado conjunto de instruções, um deadlock ocorre se as seguintes condições forem encontradas: a) Uma transacção está a usar um recurso e impede que outras o usem também. b) Uma transacção guarda pelo menos um recurso e espera por outros. c) As transacções têm um ciclo de dependências entre si, o qual causa o deadlock.

3 - Considere que aquando de uma falha, o log de recuperação um sistema de base de dados continha a seguinte informação: 104: ⟨checkpoint, {}, {} ⟩ 105: ⟨T1 , Begin⟩ 106: ⟨T1 , Insert , p, undoinfo, redoinfo, 105⟩ 107: ⟨T2 , Begin⟩ 108: ⟨T2 , Delete , p, undoinfo, redoinfo, 107⟩ 109: ⟨T1 , Insert , p, undoinfo, redoinfo, 106⟩ 110: ⟨T2 , Delete , p, undoinfo, redoinfo, 108⟩ 111: ⟨T1 , Insert , p, undoinfo, redoinfo, 109⟩ 112: ⟨T2 , Insert , p, undoinfo, redoinfo, 110⟩ 113: ⟨T2 , Abort⟩ 114: ⟨T2 , UNDO(Insert), undoinfo, redoinfo, 110⟩

Indique as acções envolvidas em cada passo do algoritmo de recuperação ARIES. Assuma que no início da recuperação, o PageLSN na versão em disco da página p é 108. Indique claramente: Quais os conteúdos da active-transaction-table e da dirty-page-table, reconstruídas aquando da fase de análise. Qual o valor do RedoLSN. Quais os updates realizados no passo de redo. Qual o valor do PageLSN na versão em buffer da página p, aquando do final do redo. Quais as acções executadas durante o passo de undo e quais os registos efectuados no log. Qual o valor do PageLSN na versão em buffer da página p, aquando do fim do undo.

1. Na fase de análise, as tabelas de active transactions e updated pages são inicializadas como vazias. Lendo do log, obtemos as seguintes tabelas: TT: {(T1 , 111), (T2 , 114)} DPT: {(p, PageLSN= 114, RecLSN = 106)} 2. Obtemos RedoLSN = 106.

3 - Na fase de redo, examinamos o log desde o RedoLSN = 106. 104: ⟨checkpoint, {}, {} ⟩ 105: ⟨T1 , Begin⟩ Skip 106: ⟨T1 , Insert , p, undoinfo, redoinfo, 105⟩ 107: ⟨T2 , Begin⟩ Skip 108: ⟨T2 , Delete , p, undoinfo, redoinfo, 107⟩ Redo 109: ⟨T1 , Insert , p, undoinfo, redoinfo, 106⟩ Redo 110: ⟨T2 , Delete , p, undoinfo, redoinfo, 108⟩ Redo 111: ⟨T1 , Insert , p, undoinfo, redoinfo, 109⟩ Redo 112: ⟨T2 , Insert , p, undoinfo, redoinfo, 110⟩ 113: ⟨T2 , Abort⟩ Redo 114: ⟨T2 , UNDO(Insert), undoinfo, redoinfo, 110⟩ 4 - PageLSN=114

5 - (111) 115: T1, UNDO(Insert), ..., 109 (110) 116: T2, UNDO(Delete), ..., 108 (109) 117: T1, UNDO(Insert), ..., 106 (108) 118: T2, UNDO(Delete), ..., 107 (107) 119: T2, End (106) 120: T1, UNDO(Insert), ..., 105 (105) 121: T1, End 6 – PageLSN = 120

b) Uma dirty-page-table reconstruída no passo de redo do algoritmo ARIES pode não ser exactamente igual à existente durante na altura da falha? Explique que diferenças podem ocorrer e indique o porquê da sua ocorrência. Depois do checkpoint e antes da falha, a página p pode ter sido enviada para o disco e removida da Dirty Page Table. A tabela reconstruida pode incluir páginas que não estavam na tabela aquando da falha, e o RecLSN de uma página p na tabela reconstruída pode assim ser menor do que o RecLSN na tabela antes da falha.

c) No passo redo do algoritmo ARIES, pode-se dar o caso do PageLSN(p) ser maior ou igual ao LSN do log record para uma modificação em p, embora na dirty-page-table tenhamos que recLSN(p) ≤ LSN do log record. Explique a que se pode dever a ocorrência desta situação. Isto apenas significa que a página em disco é mais recente do que o resultado da operação para a qual se está a fazer o redo. A situação por acontecer, por exemplo, quando de uma falha durante um processo de recovery.

d) No passo redo do algoritmo ARIES, um update é refeito numa página p apenas se o PageLSN(p) for menor que o LSN do log record para a modificação. Durante o undo, o PageLSN(p) não é inspeccionado, por forma a verificar que o update a ser desfeito ocorreu realmente, isto é, que o PageLSN(p) é maior ou igual que o LSN do log record. Explique porque é que esta verificação não é necessária. A fase de redo coloca a base de dados no mesmo estado em que se encontrava aquando da ocorrência da falha. As páginas com updates executados por transacções activas (no buffer) aquando da falha estão correctamente no buffer como resultado da fase de redo. Assim, sabemos que os uptades a serem desfeitos se encontram no buffer, e não precisamos de examinar o PageLSN.

e) Quais as acções que devem ser tomadas para uma nova falha que ocorra durante a execução da recuperação, quando o algoritmo ARIES está no meio de i) a sua fase de análise, ii) a fase de redo, iii) a fase de undo. Explique porquê. Em todos os casos, recomeçamos o processo de recovery da mesma forma que aquando da primeira falha. A fase de análise lê o log e inicializa algumas estruturas de dados em memoria (i.e. as tabelas de transacções activas e de páginas actualizadas). Se uma nova falha ocorre, esta informação é perdida e teremos de a executar a análise novamente. ii. A fase de redo coloca a base de dados (no buffer) igual aquando da ocorrência da falha. As páginas são trazidas do disco e actualizadas em memória. No entanto, é possível que o gestor do buffer escreva algumas destas páginas em disco em algum momento, e portanto o PageLSNde uma página em disco pode aumentar durante a fase de redo. Aquando de uma segunda falha, podem existir menos operações de redo para ser executadas. iii. Na fase de undo, são escritos os log records para as operações de undo que forem efectuadas. Alguns destes log records podem estar já actualizados em disco quando a nova falha ocorre, o que significa que a próxima recuperação pode fazer mais na fase de redo, uma vez que se pode fazer o redo para todas as operações que estavam em disco. Depois da fase de redo da nova recuperação, podemos continuar a fazer o undo das transacções que começamos a desfazer durante a primeira recuperação, mas podemos ter menos operações para desfazer caso as operações de undo da primeira recuperação tenham sido executadas durante a fase de redo. Em suma, não é necessário fazer o undo das operações de undo feitas aquando da primeira recuperação.

f) Durante a execução normal de transacções, muita informação é registada nos logs. Até que localização (i.e. LSN) é possível apagar o início do ficheiro de log, por forma a descartar registos antigos? Explique porquê. Considere-se que TT é a transaction table que foi escrita para o disco, e PT é a dirty page table criada no mesmo instante durante o checkpoint. Vamos definir os seguintes LSNs: n1 = min {O LSN da primeira log entry de T|T ∈ TT} n2 = min {RecLSN(p) | p ∈ PT} n3 = Begin-Checkpoint-LSN Do log, podem ser descartadas as entradas que têm um LSN menor que n = min {n1 , n2 , n3 }. Só a partir deste ponto temos a garantia que os registos não serão usados numa tarefa de recuperação.

4 - No contexto do SQL Server 2005, explique em que consiste a técnica de log shipping e indique para que finalidade pode a mesma ser utilizada. Indique ainda outras técnicas suportadas pelo SQL Server 2005 para lidar com o mesmo problema. Log shipping é uma técnica para automatizar o backup das transaction log files num servidor SQL em produção (com uma dada periodicidade de tempo) e fazer o restore num servidor standby. Executar continuamente o backup e o restore das transaction log files faz com que os dois servidores se encontrem praticamente sincronizados. Em caso de falha no servidor em produção, basta redireccionar os utilizadores para o servidor que se encontrava em standby. Uma técnica similar suportada pelo SQL Server 2005 dá pelo nome de database mirroring, envolvendo a gestão de duas cópias imediatamente sincronizadas da base de dados, em dois servidores diferentes.