Este é um post disponível para assinantes MVPartigo SQL Magazine 7 - PostgreeSQL Transações - Parte I
Artigo da Revista SQL Magazine -Edição 7.
Os artigos dessa edição estão disponíveis somente através do formato HTML.

Clique aqui para ler todos os artigos desta edição
PostgreSQL
Transações – Parte I
Podemos dizer, de forma simplificada, que transação é um mecanismo que permite a execução de várias tarefas de forma única, como se estivessem contidas em um bloco, possibilitando o cancelamento total ou parcial das operações executadas nesse contexto, além de controlar o nível de acesso e visibilidade das atualizações efetuadas entre sessões simultâneas.
Para efetuar e controlar essas tarefas, diversos sistemas de banco de dados utilizam bloqueios de tabelas e/ou registros (locks) para controle de concorrência e para garantir o contexto transacional. O PostgreSQL utiliza, a partir da versão 6.5, o modelo MVCC (Multiversion Concurrency Control).
O modelo MVCC é uma técnica utilizada para melhorar a performance do banco de dados em um ambiente multi
Uma vez iniciada uma transação no modelo MVCC, não é levado em consideração as alterações das outras transações simultâneas, proporcionando isolamento completo para cada sessão do banco de dados.
A principal diferença do MVCC para o modelo tradicional é que os bloqueios obtidos pelo MVCC ao consultar os dados (read) não conflitam com os bloqueios obtidos ao escrevê
Por exemplo, uma sessão pode executar um update na tabela e ao mesmo tempo outra sessão pode ler o registro que está sendo alterado; a leitura retornará os dados como estavam antes da alteração, pois o PostgreSQL faz um tipo de “cópia adicional” do registro.
O PostgreSQL também disponibiliza instruções de bloqueio explícito, a nível de tabela e/ou registro, por questões de compatibilidade com o SQL ANSI, para aplicativos que utilizam locks em suas regras de negócio e não se adaptariam ao modelo MVCC, e para manter compatibilidade com versões do PostgreSQL anteriores a 6.5.
O uso correto do MVCC geralmente proporciona melhor performance do que o modelo tradicional; O modelo de bloqueios, em alguns casos, exige que a transação seja finalizada para que o acesso aos registros por ela manipulados sejam liberados para outras sessões, ao passo que no modelo MVCC esse acesso é direto, independente do término das transações.
A Listagem 1 mostra a execução de vários comandos dentro de uma transação.
begin ;
insert into movimentos ( conta, tipo, valor ) values ( 27, 'D', 100.00) ;
insert into movimentos ( conta, tipo, valor ) values ( 38, 'C', 100.00) ;
update contas set saldo = saldo
update contas set saldo = saldo + 100.00 where codigo = 38 ;
commit ;
Listagem 1
Isolamento de transações
Isolamento de transações é o recurso que permite que transações concorrentes não interfiram umas com as outras. O SQL ANSI define 4 tipos de isolamento: read uncommited, read commited, repeatable read e serializable; porém, o PostgreSQL trabalha apenas com dois desses quatro tipos: read commited e serializable. Esses níveis de isolamento são definidos com base nas seguintes situações não desejáveis:
· "
ATENÇÃO! A exibição deste artigo foi interrompida.
Este é um post disponível para assinantes MVP



0
0
