-----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

Responder a