BD II – Processamento de
Transações
Professor: Luis Felipe Leite
Contato
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