bd ii – proce ssamento de transações · um plano vai tem a lista de ações das transações....

Post on 01-Aug-2018

244 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

BD II – Processamento de

Transações

Professor: Luis Felipe Leite

Contato

luisleite@recife.ifpe.edu.brProfessorluisleite.wordpress.com

Ciclo de três aulas

Processamento de transações.

Controle de Concorrência.

Recuperação de Falhas.

Ciclo de três aulas

Essa tríade é uma das coisas que mais dá confiabilidade nos bancos de dados modernos.

É uma evolução.

Vamos começar pensando...

Essa tríade é uma das coisas que mais dá confiabilidade e consistência nos bancos de dados modernos.

É uma evolução que ainda não atingiu todos os Bds.● NoSQL.

Vantagens e desvantagens de transações concorrentes?

Tudo começa com a performance do SGBD...

Execução concomitante de programas é essencial para sistemas computacionais.● CPU● SGBD não é diferente!!

Transações - Conceito

Visão abstrata do SGBD sobre um programa ou processo do usuário.● Ex: Compra de passagens aéreas

Isso gera visões diferentes do que é uma transação.

Para o banco, interessa apenas Leitura e gravação, Leitura e gravação, Leitura e gravação.● Se isso for feito concorrentemente. Melhor!!

Transações – Estados de Execução

Existem alguns estados necessários para que uma transação seja reconhecida pelo banco, além de lida, gravada, e salva definitivamente (excetuando se a transação der errado).

Os estados de execução são:● BEGIN_TRANSACTION;● READ OU WRITE;● END_TRANSACTION;● COMMIT_TRANSACTION; (Se comprometeu, já era.)● ROLLBACK (OU ABORT). (Semântica)

Transações – Estados de Execução

Vamos criar um cenário...

Imaginemos essas operações:● ler(x): Ler item X do banco de dados e armazena na

variável X do programa.● gravar(x): Grava variável X do programa no item X do

banco.● Possível outros itens...y, N, M, T

Vamos abstrair a questão da memória.

Consideremos as prateleiras de um supermercado.

Nosso mercado.

● Operação de transferência.

● Entenda N como o número de bebidas que foram retiradas da prateleira X e serão transferidas para a prateleira Y.

Prateleira X Prateleira Y

N

E esse cenário funciona?

Chegou mais refrigerante.

● Agora temos duas operações concorrentes.

● Enquanto uma está retirando refrigerantes do tipo N da prateleira X e transportando para a prateleira Y, a outra transação está adicionando os novos refrigerantes do tipo M na prateleira X já mexida.

Prateleira X

M

Transações concorrentes

● Transações concorrentes podem ser vistas como algo paralelo.● Essa forma de processar as coisas geralmente cria problemas.● Necessidade de um plano de execução.

Transações concorrentes

Plano de execução

Plano de execução também é conhecido por “Schedule”.

Um plano vai tem a lista de ações das transações.● READ, COMMIT, WRITE, ABORT

Em um plano de execução a ordem das transações “locais” nunca será alterada.

● S para transações T1, T2...Tn.● Ordem de ações no plano Ti = ordem das açoes em

S

Transações em série

Plano de execução - Serial

Visto como o plano que nunca dá errado.

Parte do princípio que uma transação só sera realizada depois que outra for finalizada.

No mundo real, isso é difícil de acontecer.

Todos os planos devem agir como se fossem seriais, mesmo não sendo. (Lá pra frente veremos mais sobre isso).

Plano de execução - Serial

Independente da ordem das transações, o resultado será consistente.

O banco pode decidir a ordem de execução das transações em caso de concorrência.

Caso o admin queira uma ordem na coisas é necessário algumas opções extras.● Ordem interna.● Realização sempre depois de commit.

Plano de execução serial

Transações intercaladas

Plano de execução - Intercalado

Transações intercaladas – Problemas??

Transações intercaladas – Problemas??

● Atualização perdida. (Elmasri)

● Sobrescrita de dados alterados sem commit. (Ramakrishnam)– Conflito Write/Write

Transações intercaladas – Problemas??

● Dirty Read

● Atualização temporária. (Elmasri)

● Leitura de dados alterados sem commit (Ramakrishnam)

– Conflito Write/Read

Transações intercaladas – Problemas??

Transações intercaladas – Problemas??

● Leitura repetitiva.

● Leitura não repetitiva. (Elmasri)

● Leitura não repetitiva. (Ramakrishnan)

– Conflito read/write

Problemas em transações concorrentes - Resumo

Elmasri:● Atualização perdida.● Atualização temporária.● Resumo incorreto.● Leitura não repetitiva.

Ramakrishnam:● Conflito WR = Leitura de dados alterados sem commit.● Conflito RW = Leitura não repetível.● Conflito WW = Sobrescrita de dados alterados sem

commit.

ACID

Atomicidade.ConsistênciaIsolamentoDurabilidade

Planos Restauráveis

Plano restaurável:● A transação T só realizará commit depois que todas as transações cujo

valores T leu realizarem commit.● É permitido Dirty Read, porém não será feito commit.● Pode gerar efeito cascata.

Plano cascadeless:● T só irá ler algum valor que foi alterado por transações que já

realizaram commit.● Não permite dirty reading.● Mais restrito, custa bem caro em transações longas.

Plano estrito:● T só lê e/ou grava valores que foram alterados por transações que já

realizaram commit.● Mesma coisa que o anterior, mas mais fácil de implementar.

Planos Serializável

Plano serial é visto como o plano correto. Plano que nunca dá problema.

Na prática, isto não acontece.

O plano serializável é um plano equivalente ao plano serial.Dizer que um plano não serial é um plano seriálizavel quer dizer que ele é correto.

Plano Serial

Plano Serializável?

● A questão é: Como eu sei se é serializável ou não?

E este??

● A questão é: Como eu sei se é serializável ou não?

Grafos de precedência

O banco não monta seu plano de transações antes. Este é feito em tempo quase real.

O esforço computacional para se fazer o plano antes é quase impossível.

O uso de grafos de precedência, é uma forma de montar seu plano com o intuito de saber os conflitos causadores de problema.

Grafos de precedência

Até agora, nós sabemos só vamos saber se o plano é correto ou não, depois que executamos as transações.

Se o plano deu problema, como podemos identificar o problema logo de cara?

Grafos de precedência - Algoritmo

Para cada transação será criada uma aresta no grafo.

Para cada caso em S temos três casos possíveis:● Tj leu (x) depois de Ti gravar (x).

● Aresta Ti → Tj● Tj gravou (x) depois de Ti ler (x).

● Aresta Ti → Tj● Tj gravou (x) depois de Ti gravar (x).

● Aresta Ti → Tj

O plano serializável é o plano que não tem ciclos!!

Grafos de precedência - Algoritmo

Vamos começar com um plano serial.

Grafos de precedência - Algoritmo

E este?

Grafos de precedência - Algoritmo

E este terceiro caso??

Equivalência

Método de detecção da efetividade de um plano antes que o processamento de suas transações dê problema.

Em geral, pode ser visto como um conjunto de características de um plano que façam ele equivalente a um plano correto.

Equivalência

Planos Conflito Equivalentes

Equivalência de visão

Essas duas formas criam classes importantes de equivalência entre planos.

Equivalência – Plano Conflitos Equivalentes

A ordem das operações conflitantes deve ser a mesma em ambos.● O grafo de precedência ajuda a observar essas

operações.

As operações conflitantes podem ser vistas como operações que:● Pertencem a diferentes transações;● Acessam o mesmo item;● Pelo menos uma dela for gravar.

Equivalência – Plano Conflitos Equivalentes

Imagine um exemplo onde temos um plano A e um plano B. Caso a ordem das operações, de ambos os planos for a mesma, é certo dizer que esses planos são conflito equivalentes.

A questão é que o objetivo da equivalência, não é fazer para qualquer plano, mas sim para um plano que eu considero correto. Um plano serial.

Um plano conflito serializável é um plano que é conflito equivalente a um plano Serial.

Equivalência – Plano Conflitos Equivalentes

● Quais são as operações conflitantes?

Equivalência – Plano Conflitos Equivalentes

● Não são conflito equivalentes e S2 não é conflito serializável.

Equivalência – Plano Conflitos Equivalentes

Dois planos A e B só possuem equivalência por visão se:● Possuírem as mesmas transações e operações.● No plano A, se há um read (x) em Ti que seja valor

original ou gravado por um write (x) em Tj, o mesmo acontece em B.

Até aula que vem – Controle de Concorrência

top related