bd ii – proce ssamento de transações...plano de execução - serial visto como o plano que nunca...

49
BD II – Processamento de Transações Professor: Luis Felipe Leite

Upload: others

Post on 31-Jan-2021

0 views

Category:

Documents


0 download

TRANSCRIPT

  • BD II – Processa

    mento de

    Transações

    Professor: Luis F

    elipe Leite

  • Contato

    [email protected]

  • 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

    Slide 1Slide 2Slide 3Slide 4Slide 5Slide 6Slide 7Slide 8Slide 9Slide 10Slide 11Slide 12Slide 13Slide 14Slide 15Slide 16Slide 17Slide 18Slide 19Slide 20Slide 21Slide 22Slide 23Slide 24Slide 25Slide 26Slide 27Slide 28Slide 29Slide 30Slide 31Slide 32Slide 33Slide 34Slide 35Slide 36Slide 37Slide 38Slide 39Slide 40Slide 41Slide 42Slide 43Slide 44Slide 45Slide 46Slide 47Slide 48Slide 49