Post on 04-Jun-2015
description
Transações e Transações e Gerenciamento de Gerenciamento de
Transações em Bancos Transações em Bancos de Dadosde Dados
Tradução do Orignal em Ingles de Svetlin NakovTradução do Orignal em Ingles de Svetlin Nakov
National Academy for Software DevelopmentNational Academy for Software Development
academy.devbg.org
Tradução e Adaptação:Vinicius Augustus PaluchTradução e Adaptação:Vinicius Augustus PaluchVersão Original disponível em : http://www.slideshare.net/nakov/svetlin-nakov-database-transactions Versão Original disponível em : http://www.slideshare.net/nakov/svetlin-nakov-database-transactions
AgendaAgendaAgendaAgenda
• O que são Transações?O que são Transações?
• Conceito ACID de TransaçõesConceito ACID de Transações
• Problemas de ConcorrênciaProblemas de Concorrência
• Técnicas de controle concorrênciaTécnicas de controle concorrência
• Estratégias de Bloqueio (Locking)Estratégias de Bloqueio (Locking)
• Bloqueio Otimista e PessimistaBloqueio Otimista e Pessimista
• DeadlocksDeadlocks
• Transações e RecuperaçãoTransações e Recuperação
• O que são Transações?O que são Transações?
• Conceito ACID de TransaçõesConceito ACID de Transações
• Problemas de ConcorrênciaProblemas de Concorrência
• Técnicas de controle concorrênciaTécnicas de controle concorrência
• Estratégias de Bloqueio (Locking)Estratégias de Bloqueio (Locking)
• Bloqueio Otimista e PessimistaBloqueio Otimista e Pessimista
• DeadlocksDeadlocks
• Transações e RecuperaçãoTransações e Recuperação
Agenda (2)Agenda (2)Agenda (2)Agenda (2)
• Transações na Linguagem SQLTransações na Linguagem SQL
• Niveis de Isolamento de TransaçõesNiveis de Isolamento de Transações
• Onde e Quando usar TransaçõesOnde e Quando usar Transações
• Transações na Linguagem SQLTransações na Linguagem SQL
• Niveis de Isolamento de TransaçõesNiveis de Isolamento de Transações
• Onde e Quando usar TransaçõesOnde e Quando usar Transações
O que são O que são Transações?Transações?
TransactionsTransactionsTransactionsTransactions
• TransaçõesTransações são sequência de Ações são sequência de Ações ((Operações de Banco de DadosOperações de Banco de Dados)) que são que são executadas como “um conjunto”executadas como “um conjunto”::
• Ou todas são executas com sucessoOu todas são executas com sucesso
• Ou Nenhuma delasOu Nenhuma delas
• ExemploExemplo
• Um banco transfere dinheiro entre duas Um banco transfere dinheiro entre duas contas contas ((saque saque + + depositodeposito))
• Se qualquer uma das operações falhar, a Se qualquer uma das operações falhar, a trasferência será canceladatrasferência será cancelada
• TransaçõesTransações são sequência de Ações são sequência de Ações ((Operações de Banco de DadosOperações de Banco de Dados)) que são que são executadas como “um conjunto”executadas como “um conjunto”::
• Ou todas são executas com sucessoOu todas são executas com sucesso
• Ou Nenhuma delasOu Nenhuma delas
• ExemploExemplo
• Um banco transfere dinheiro entre duas Um banco transfere dinheiro entre duas contas contas ((saque saque + + depositodeposito))
• Se qualquer uma das operações falhar, a Se qualquer uma das operações falhar, a trasferência será canceladatrasferência será cancelada
RollbackRollback
CommitCommit
A TransactionA TransactionA TransactionA Transaction
LeituraLeitura GravaçãoGravação
GravaçãoGravaçãoSituação Situação InicialInicial
(Durável)(Durável)
Situação FinalSituação FinalDurável e Durável e
consistenteconsistente
Coleção de Coleção de leituras e leituras e gravaçõesgravações
Transactions BehaviorTransactions BehaviorTransactions BehaviorTransactions Behavior
• Transações garantem a consistência e Transações garantem a consistência e intregridade do banco de dadosintregridade do banco de dados• Todas as modificações da transação são Todas as modificações da transação são
“temporárias”“temporárias”
• Modificações seão “persistidas” apenas Modificações seão “persistidas” apenas após o Commitapós o Commit
• A qualquer momento (Antes do commit) A qualquer momento (Antes do commit) as modificações podem ser canceladas as modificações podem ser canceladas através de um Rollbackatravés de um Rollback
• Todas as operações são executadas Todas as operações são executadas como uma unidades ( ou nenhuma será)como uma unidades ( ou nenhuma será)
• Transações garantem a consistência e Transações garantem a consistência e intregridade do banco de dadosintregridade do banco de dados• Todas as modificações da transação são Todas as modificações da transação são
“temporárias”“temporárias”
• Modificações seão “persistidas” apenas Modificações seão “persistidas” apenas após o Commitapós o Commit
• A qualquer momento (Antes do commit) A qualquer momento (Antes do commit) as modificações podem ser canceladas as modificações podem ser canceladas através de um Rollbackatravés de um Rollback
• Todas as operações são executadas Todas as operações são executadas como uma unidades ( ou nenhuma será)como uma unidades ( ou nenhuma será)
Transactions: ExamplesTransactions: ExamplesTransactions: ExamplesTransactions: Examples
Saque R$100Saque R$100Saque R$100Saque R$100
1.1. Ler PoupançaLer Poupança
2.2. Saldo Poupança =Saldo Poupança =Saldo atual - 100Saldo atual - 100
3.3. Ler Saldo Ccorr.Ler Saldo Ccorr.
4.4. Saldo Ccorr. =Saldo Ccorr. =Saldo Anterior+ Saldo Anterior+ 100100
5.5. Gravar Saldo Gravar Saldo PoupançaPoupança
6.6. Gravar saldo Gravar saldo Ccorr.Ccorr.
1.1. Ler o saldo atualLer o saldo atual
2.2. Saldo = Saldo Saldo = Saldo atual - Saque atual - Saque
3.3. Registrar SaldoRegistrar Saldo
4.4. Entregar DinheiroEntregar Dinheiro
Transferência R$100Transferência R$100Transferência R$100Transferência R$100
What Can Go Wrong?What Can Go Wrong?What Can Go Wrong?What Can Go Wrong?
• Algumas operações falhamAlgumas operações falham
• Ex., Flahas de Software, comunicação, Ex., Flahas de Software, comunicação, Banco de Dados ou HardwareBanco de Dados ou Hardware
• InterferÊncia entre transaçõesInterferÊncia entre transações
• O que acontece se multiplas alterações O que acontece se multiplas alterações forem feitas na mesma conta?forem feitas na mesma conta?
• Parte dos dados é perdida … Parte dos dados é perdida …
• Comunicação falha entre o Saque e o Comunicação falha entre o Saque e o Depósito.Depósito.
• Algumas operações falhamAlgumas operações falham
• Ex., Flahas de Software, comunicação, Ex., Flahas de Software, comunicação, Banco de Dados ou HardwareBanco de Dados ou Hardware
• InterferÊncia entre transaçõesInterferÊncia entre transações
• O que acontece se multiplas alterações O que acontece se multiplas alterações forem feitas na mesma conta?forem feitas na mesma conta?
• Parte dos dados é perdida … Parte dos dados é perdida …
• Comunicação falha entre o Saque e o Comunicação falha entre o Saque e o Depósito.Depósito.
Transações ACIDTransações ACID
Propriedade das Propriedade das TransaçõesTransaçõesPropriedade das Propriedade das TransaçõesTransações
• SGDBs possuem suporte imbutido à SGDBs possuem suporte imbutido à TransaçõesTransações
• ACID Siginifica:ACID Siginifica:
• AAtomicidadetomicidade
• CConsistenciaonsistencia
• IIsolamentosolamento
• DDurabilidadeurabilidade
• SGDBs possuem suporte imbutido à SGDBs possuem suporte imbutido à TransaçõesTransações
• ACID Siginifica:ACID Siginifica:
• AAtomicidadetomicidade
• CConsistenciaonsistencia
• IIsolamentosolamento
• DDurabilidadeurabilidade
AtomicidadeAtomicidadeAtomicidadeAtomicidade
• AtomicidadeAtomicidade significa que significa que
• Transações são execudas como uma Transações são execudas como uma UNIDADEUNIDADE
• SGDB garante que todas as transações SGDB garante que todas as transações são executadas ou desfeitassão executadas ou desfeitas
• ExemplosExemplos
• Transferência de valores entre contasTransferência de valores entre contas
• Ou o Depósito+Saque são registrados com Ou o Depósito+Saque são registrados com sucesso ou nenhum dos dois serásucesso ou nenhum dos dois será
• Em caso de falha o BD permanece Em caso de falha o BD permanece inalteradoinalterado
• AtomicidadeAtomicidade significa que significa que
• Transações são execudas como uma Transações são execudas como uma UNIDADEUNIDADE
• SGDB garante que todas as transações SGDB garante que todas as transações são executadas ou desfeitassão executadas ou desfeitas
• ExemplosExemplos
• Transferência de valores entre contasTransferência de valores entre contas
• Ou o Depósito+Saque são registrados com Ou o Depósito+Saque são registrados com sucesso ou nenhum dos dois serásucesso ou nenhum dos dois será
• Em caso de falha o BD permanece Em caso de falha o BD permanece inalteradoinalterado
ConsistenciaConsistenciaConsistenciaConsistencia
• ConsistencConsistencia ia significa que:significa que:• O Banco de dados está consitente (íntegro) O Banco de dados está consitente (íntegro)
antes e depois da transaçãoantes e depois da transação
• Apenas dados válidos foram gravadosApenas dados válidos foram gravados
• A Transação não pode quebrar regras de A Transação não pode quebrar regras de integridade e respeita:integridade e respeita:• Chaves primárias, estrangeiras e únicasChaves primárias, estrangeiras e únicas
• ExemploExemplo• Transação não pode encerrar com chave Transação não pode encerrar com chave
duplicadaduplicada
• ConsistencConsistencia ia significa que:significa que:• O Banco de dados está consitente (íntegro) O Banco de dados está consitente (íntegro)
antes e depois da transaçãoantes e depois da transação
• Apenas dados válidos foram gravadosApenas dados válidos foram gravados
• A Transação não pode quebrar regras de A Transação não pode quebrar regras de integridade e respeita:integridade e respeita:• Chaves primárias, estrangeiras e únicasChaves primárias, estrangeiras e únicas
• ExemploExemplo• Transação não pode encerrar com chave Transação não pode encerrar com chave
duplicadaduplicada
IsolamentoIsolamentoIsolamentoIsolamento
• Isolamento Isolamento significa quesignifica que• Multiplas transações simultâneas não afetam umas Multiplas transações simultâneas não afetam umas
as outrasas outras• Transações não enxergam dados não Transações não enxergam dados não
COMMITADOS.COMMITADOS.• O Nível de isolamento define o quanto uma O Nível de isolamento define o quanto uma
transação “enxerga” alterações das outrastransação “enxerga” alterações das outras• Read committed, read uncommitted, repeatable Read committed, read uncommitted, repeatable
read, serializable, etc.read, serializable, etc.
• ExemploExemplo• Gerentes podem ver transferências entre contas Gerentes podem ver transferências entre contas
(débito ou crédito) mas não as 2 operações.(débito ou crédito) mas não as 2 operações.
• Isolamento Isolamento significa quesignifica que• Multiplas transações simultâneas não afetam umas Multiplas transações simultâneas não afetam umas
as outrasas outras• Transações não enxergam dados não Transações não enxergam dados não
COMMITADOS.COMMITADOS.• O Nível de isolamento define o quanto uma O Nível de isolamento define o quanto uma
transação “enxerga” alterações das outrastransação “enxerga” alterações das outras• Read committed, read uncommitted, repeatable Read committed, read uncommitted, repeatable
read, serializable, etc.read, serializable, etc.
• ExemploExemplo• Gerentes podem ver transferências entre contas Gerentes podem ver transferências entre contas
(débito ou crédito) mas não as 2 operações.(débito ou crédito) mas não as 2 operações.
DurabilidadeDurabilidadeDurabilidadeDurabilidade
• DurabilidadeDurabilidade significa quesignifica que
• Se uma transação é confirmada (COMMIT) ela Se uma transação é confirmada (COMMIT) ela será persistenteserá persistente• Não pode ser perdida nem desfeitaNão pode ser perdida nem desfeita
• Garantida através de LOGS de TRANSAÇÂO Garantida através de LOGS de TRANSAÇÂO e Backupe Backup
• ExemploExemplo
• Ápós concluida a transferência, a energia Ápós concluida a transferência, a energia falhafalha
• Ao retornar, os dados continuam íntegros e Ao retornar, os dados continuam íntegros e registrados conforme o momento registrados conforme o momento imediatamente anterior à falhaimediatamente anterior à falha
• DurabilidadeDurabilidade significa quesignifica que
• Se uma transação é confirmada (COMMIT) ela Se uma transação é confirmada (COMMIT) ela será persistenteserá persistente• Não pode ser perdida nem desfeitaNão pode ser perdida nem desfeita
• Garantida através de LOGS de TRANSAÇÂO Garantida através de LOGS de TRANSAÇÂO e Backupe Backup
• ExemploExemplo
• Ápós concluida a transferência, a energia Ápós concluida a transferência, a energia falhafalha
• Ao retornar, os dados continuam íntegros e Ao retornar, os dados continuam íntegros e registrados conforme o momento registrados conforme o momento imediatamente anterior à falhaimediatamente anterior à falha
Transações ACID e Bancos de Transações ACID e Bancos de DadosDadosTransações ACID e Bancos de Transações ACID e Bancos de DadosDados
• Bancos transacionais mais popularesBancos transacionais mais populares
• Oracle DatabaseOracle Database
• Microsoft SQL ServerMicrosoft SQL Server
• IBM DB2IBM DB2
• PostgreSQLPostgreSQL
• Borland InterBase / FirebirdBorland InterBase / Firebird
• MySQL só será compatícel com ACID MySQL só será compatícel com ACID se substituir a engine de se substituir a engine de armazenamento!!!armazenamento!!!
• Bancos transacionais mais popularesBancos transacionais mais populares
• Oracle DatabaseOracle Database
• Microsoft SQL ServerMicrosoft SQL Server
• IBM DB2IBM DB2
• PostgreSQLPostgreSQL
• Borland InterBase / FirebirdBorland InterBase / Firebird
• MySQL só será compatícel com ACID MySQL só será compatícel com ACID se substituir a engine de se substituir a engine de armazenamento!!!armazenamento!!!
Outras apresentações...Outras apresentações...Outras apresentações...Outras apresentações...
• Problemas de ConcorrênciaProblemas de Concorrência
• Técnicas de Controle de ConcorrênciaTécnicas de Controle de Concorrência
• Estratégias de Bloqueio (Locking)Estratégias de Bloqueio (Locking)
• Transações e Recuperação (Recovery)Transações e Recuperação (Recovery)
• Transações em linguagem SQLTransações em linguagem SQL
• Níveis de Isolamento de Transações Níveis de Isolamento de Transações
• Problemas de ConcorrênciaProblemas de Concorrência
• Técnicas de Controle de ConcorrênciaTécnicas de Controle de Concorrência
• Estratégias de Bloqueio (Locking)Estratégias de Bloqueio (Locking)
• Transações e Recuperação (Recovery)Transações e Recuperação (Recovery)
• Transações em linguagem SQLTransações em linguagem SQL
• Níveis de Isolamento de Transações Níveis de Isolamento de Transações
AgradecimentosAgradecimentosAgradecimentosAgradecimentos
Tradução do Orignal em Ingles de Svetlin NakovTradução do Orignal em Ingles de Svetlin Nakov
National Academy for Software DevelopmentNational Academy for Software Development
academy.devbg.org