-----Mensagem Original-----
From: Tiago José Adami
Sent: Friday, April 1, 2016 1:52 PM
To: Comunidade PostgreSQL Brasileira
Subject: Re: [pgbr-geral] Como tratar a concorrencia Update x Select
Em 1 de abril de 2016 13:33, <siste...@mvsoftware.com.br> escreveu:
Pessoal tenho uma função no sistema onde o usuario seleciona varios
produtos
e muda por exemplo a localização,
imagine que seja 2mil produtos, neste momento o caixa está vendendo e aí
trava,
isso seria normal ou tem alguma coisa que posso mudar pra não travar o
registro enquanto altera?
Eu poderia travar no caixa lá é prioridade, pois o cliente já está com o
produto na mão, mas lá é só select.
Como o PostgreSQL trava essas concorrências?
Para responder esta pergunta são necessárias algumas informações:
1) Qual a versão do PostgreSQL utilizada?
9.1
2) Qual o nível de isolação (isolation level) utilizado nos caixas [1]?
Eu uso um componente chamado Zeos no delphi e nele está a opção
TransactionLevel = tiNone, ou seja ele deixa o postgres decidir, então deve
ser o padrão.
As opções são:
tiNone
tiReadCommitted
tiReadUncommitted
tiRepeatableRead
tiSerializable
Curioso eu achei que estivesse tiReadCommitted, pois é o que normalmente
uso.
3) O comando SELECT que busca o produto no caixa está utilizando a
cláusula FOR UPDATE?
Não
4) O processo de venda atualiza o valor de alguma coluna na tabela de
produtos?
Não
O nível de isolação padrão é READ COMMITED. Neste caso você não teria
problemas exceto se há concorrência de UPDATE/DELETE sobre o mesmo
registro sendo alterado no cadastro e na venda.
Vou verificar aqui se mais de um usuário está usando essa rotina de Update
por demanda, pois pode estar aí o problema.
Marcelo Silva
[1] http://www.postgresql.org/docs/current/static/sql-set-transaction.html
TIAGO J. ADAMI
http://www.adamiworks.com
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
_______________________________________________
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral