banco de dados, gerencimaneto de transacoes

Upload: wanderson120

Post on 17-Jul-2015

81 views

Category:

Documents


0 download

TRANSCRIPT

Bancos de Dados II Gerenciamento de Transaes

Lineu Antonio de Lima SantosTeresina, 04 de novembro de 2011

Viso Geral Transaes em SGBDs Propriedades ACID Estados de uma Transao Implementao da Atomicidade e Durabilidade Execues Simultneas

2

Transaes em SGBDs uma unidade de execuo de programa que acessa e, possivelmente, atualiza vrios itens de dados Coleo de operaes que formam uma nica unidade lgica de trabalho Normalmente, uma transao iniciada por um programa do usurio escrito em DML ou uma linguagem de programao de alto nvel Delimitada por instrues de inicio e fim de transao A transao consiste em todas as operaes executadas entre essas instrues

No SQL Server uma transao inicia com o comando Begin Transaction, seguida por um ou mais comandos de manipulao do banco de dados, encerrando-se com Commit ou Rollback

Transaes em SGBDs Um SGBD precisa garantir a execuo apropriada de transaes apesar das falhas Alm disso, precisa gerenciar a execuo simultnea de transaes de um modo a evitar a introduo de inconsistncias Durante a execuo da transao, o banco de dados pode ser temporariamente inconsistente.4

Propriedades ACID Para garantir a integridade dos dados, um SGBD deve manter as seguintes propriedades Atomicidade. Ou todas as operaes da transao so refletidas corretamente no banco de dados ou nenhuma delas . Consistncia. A execuo de uma transao isolada preserva a consistncia do banco de dados. Isolamento. Embora vrias transaes possam ser executadas simultaneamente, cada transao precisa estar desinformada das outras transaes que esto sendo executadas ao mesmo tempo. Os resultados da transao intermediria precisam estar ocultos das outras transaes sendo executadas simultaneamente. Ou seja, para cada par de transaes, Ti e Tj, parece para Ti que Tj, terminou a execuo antes que Ti comeasse ou Tj iniciou a execuo depois que Ti terminou.

Durabilidade. Depois que uma transao for completada com sucesso, as mudanas que ela fez ao banco de dados persistem, mesmo que existem falhas no sistema.5

Propriedades ACID As transaes acessam dados usando duas operaes:

read(X) : transfere o item de dados X do BD para o buffer local write(X) : transfere o item de dados X do buffer local para o BD Exemplo: Suponha um sistema bancrio. A transao Ti transfere R$50,00 da conta A para a conta B.

Ti:

1. 2. 3. 4. 5. 6.

read(A); A := A 50; write(A); read(B); B := B + 50; write(B);

Propriedades ACID Requisito de atomicidade Se a transao falhar aps a etapa 3 e antes da etapa 6, o sistema deve garantir que suas atualizaes no sejam refletidas no banco de dados, ou uma inconsistncia ir resultar.

1. read(A); 2. A := A 50; 3. write(A); 4. read(B); 5. B := B + 50; 6. write(B);

Requisito de consistncia A soma de A e B inalterada pela execuo da transao.7

Propriedades ACID Requisito de isolamento Se entre as etapas 3 e 6, outra transao receber permisso de acessar o banco de dados parcialmente atualizado, ele ver um banco de dados inconsistente (a soma A + B ser menor do que deveria ser). Isso pode ser trivialmente assegurado executando transaes serialmente, ou seja, uma aps outra. Entretanto, executar mltiplas transaes simultaneamente oferece vantagens significativas, como veremos mais adiante.

1. 2. 3. 4. 5. 6.

read(A); A := A 50; write(A); read(B); B := B + 50; write(B);

Requisito de durabilidade Quando o usurio notificado de que a transao est concluda (ou seja, a transao dos R$ 50 ocorreu), as atualizaes no banco de dados pela transao precisam persistir apesar de falhas.8

Estados de uma Transao Na ausncia de falhas, todas as transaes so completadas com sucesso (confirmada ou comitted) Caso contrrio considerada abortada Qualquer mudana feita no BD precisa ser desfeita, ou revertida (rolled back)

Quando uma transao tiver sido confirmada, no podemos desfazer seus efeitos abortando-a Somente atravs de uma nova transao de compensao responsabilidade do usurio9

Estados de uma Transao Ativa A transao permanece neste estado enquanto estiver executando Parcialmente Confirmada Aps a execuo da ltima declarao Falha Aps a descoberta de que a execuo normal no pode continuar Abortada Depois que a transao foi desfeita e o banco de dados foi restabelecido ao estado anterior do incio da execuo da transao Confirmada Aps a concluso com sucesso

Estados de uma TransaoEnd transaction Begin transactionEm efetivao parcial

CommitConfirmada

Ativaread, write AbortFalha

Abort

Abortada

Diagrama de estados

Implementao da Atomicidade e Durabilidade O componente de gerenciamento de recuperao de um sistema de banco de dados implementa o suporte para atomicidade e durabilidade Cpia de sombra Consiste em fazer cpias completas do banco de dados Considera que apenas uma transao est ativa de cada vez Um ponteiro chamado db_pointer sempre aponta para a cpia atual (consistente) do banco de dados Todas as atualizaes so feitas em uma cpia de sombra do banco de dados, e o db_pointer apontado para a cpia de sombra atualizada apenas aps a transao alcanar um commit parcial e todas as pginas atualizadas terem sido transferidas para o disco Caso a transao falhar, a antiga cpia consistente apontada pelo db_pointer pode ser usada, e a cpia de sombra pode ser excluda

Implementao da Atomicidade e Durabilidade

A cpia de sombra til para editores de texto, mas extremamente ineficiente para grandes bancos de dados Executar uma transao nica exige copiar o banco de dados inteiro.

Execues Simultneas Um sistema de processamento de transaes normalmente permitem que vrias transaes sejam executadas simultaneamente. Isso pode provocar diversas complicaes, ento qual a vantagem? Melhor utilizao do processador e do disco, levando a um melhor throughput de transao: uma transao pode estar usando a CPU enquanto outra est lendo ou escrevendo no disco. Isso aumenta o nmero de transaes executadas em determinada quantidade de tempo Tempo de mdio de resposta reduzido para transaes: as transaes curtas no precisam esperar atrs das longas

O SGBD precisa controlar a interao entre as transaes simultneas para impedir que destruam a consistncia do BD Esquemas de controle de concorrncia Mecanismos para obter isolamento14

Execues Simultneas Schedule (Escalas de Execuo) Seqncias de instrues que especificam a ordem cronolgica em que as instrues das transaes simultneas so executadas Um schedule para um conjunto de transaes precisa consistir em todas as instrues dessas transaes Precisam preservar a ordem em que as instrues aparecem em cada transao individual

Uma transao que completa com sucesso sua execuo ter uma instruo commit como a ltima instruo (ser omitida se for bvia) Uma transao que no completa com sucesso sua execuo ter instruo abort como a ltima instruo (ser omitida se for bvia)15

Execues Simultneas As escalas de execuo execuo so de dois tipos: Seriais e no seriais Escala Serial ou Seqencial As operaes de cada transao so executadas de forma consecutiva sem a sobreposio com operaes de outras transaes Uma transao ativa por vez Sempre geram estados consistentes16

Execues Simultneas Exemplo: Escala 1 Suponha que T1 transfere R$ 50 de A para B e T2 transfere 10% do saldo de A para B. A seguir est um schedule serial em que T1 seguido de T2.

Valor inicial de A: R$ 1000,00 Valor inicial de B: R$ 2000,00 Valor final de A: R$ 855,00 Valor inicial de B: R$ 2145,0017

Execues Simultneas Escalas de Execuo no Seriais Executam vrias transaes simultaneamente So executadas seqncias de operaes de transaes diferentes de forma intercalada Com diversas transaes, o tempo de CPU compartilhado entre todas elas Vrias sequncias de execuo so possveis, pois as vrias instrues agora podem ser intercaladas No entanto, nem todas as execues concorrentes resultam em um estado correto

18

Execues Simultneas Exemplo: Escala 2 Sejam T1 e T2 as transaes definidas anteriormente. O schedule a seguir no um schedule serial, mas equivalente ao Schedule 1.

Valor inicial de A: R$ 1000,00 Valor inicial de B: R$ 2000,00 Valor final de A: R$ 855,00 Valor inicial de B: R$ 2145,00

19

Execues Simultneas Exemplo: Escala 3 O seguinte schedule concorrente no preserva o valor da soma A + B.

Valor inicial de A: R$ 1000,00 Valor inicial de B: R$ 2000,00 Valor final de A: R$ 950,00 Valor inicial de B: R$ 2100,00

20

Execues Simultneas Pelos exemplos, fica claro que a execuo concorrente das transaes no deve ser entregue inteiramente ao sistema operacional, o que levaria a estados inconsistentes tarefa do SGBD garantir que qualquer escala de execuo executado deixe o banco de dados em um estado consistente

O componente de controle de concorrncia executa essa tarefa Nas prximas aulas entenderemos como isso feito

Referncia SILBERSCHATZ, Abraham, KORTH, Henry F. e SUDARSHAN, S. Sistema de Banco de Dados. 5 Edio. Rio de Janeiro, Editora Campus. Captulo 15

22