DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da SQL Magazine DIGITAL ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!


artigo SQL Magazine 7 - PostgreeSQL Transações - Parte I

Artigo da Revista SQL Magazine -Edição 7.

 Atenção: por essa edição ser muito antiga não há arquivo PDF para download.
Os artigos dessa edição estão disponíveis somente através do formato HTML.

capnet43.jpg

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-usuário com contexto transacional. A consistência nesse contexto é mantida através de um modelo multi versão, onde cada transação trabalha com uma imagem dos dados no estado que eles se encontravam no início da transação.

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ê-los (write) e vice-versa.

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 - 100.00 where codigo = 27 ;

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
Este post também está disponível para assinantes da SQL Magazine DIGITAL ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!






    0 COMENTÁRIO

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.


Nenhum comentário foi postado - seja o primeiro a comentar!



Publicidade
Autor
Equipe Devmedia

Noticias/Dicas/Artigos publicados.




Space do autor
Estatísticas
Favorito:
Comentários:
Feedback:
Utilidade:
0   0
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2012 - Todos os Direitos Reservados a web-03