Escolar Documentos
Profissional Documentos
Cultura Documentos
Viso Geral
Transaes em SGBDs Propriedades ACID Estados de uma Transao Implementao da Atomicidade e Durabilidade Execues Simultneas
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.
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.
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.
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
Quando uma transao tiver sido confirmada, no podemos desfazer seus efeitos abortando-a
Somente atravs de uma nova transao de compensao responsabilidade do usurio
9
Commit
Confirmada
Ativa
read, write Abort
Falha
Abort
Abortada
Diagrama de estados
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 isolamento
14
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 consistentes
16
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
17
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
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
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
Referncia
SILBERSCHATZ, Abraham, KORTH, Henry F. e SUDARSHAN, S. Sistema de Banco de Dados. 5 Edio. Rio de Janeiro, Editora Campus.
Captulo 15
22