Tome top post...

Em 12-04-2013 16:33, Marcelo da Silva escreveu:
Com toda humildade possivel :)

Não vejo como, no meu caso que preciso de transações concorrentes (tempo
real), abrir e fechar as transações sem um malabarismo excepcional.
Por exemplo, meu cadastro de clientes se o usuário abre, não posso abrir
pegar X registros e fechar a transação, eu trabalho com componentes
DBWare (conexão direta com a tabela), eu tenho um controle manual por
assim dizer, quando um registro está em uso e outro tenta abri-lo o
sistema não deixa... funciona de boa.
  O Financeiro tem que ver uma venda que acabou de ser efetivada e dar o
aval, se não retorna ao vendedor e por ai vai... é bem dinâmico mesmo, é
atendimento ao público (balcão).
Esse meu problema não acontece toda hora, é bem exporádico, mas quando
acontece me dá esse transtorno.
Na minha aplicação enquanto um formulario está aberto tenho que manter a
transação aberta senão ele limpa as informações.

Isso se chama lock pessimista.
É um conceito antigo, mas muita aplicação funciona assim até hoje, e posso até chutar que sua aplicação é Delphi.


Quanto a terminar somente o processo do tal registro eu consigo fazer
isso pelo pgadmin mas ele trava o registro mesmo sem a conexão, isso que
estou achando estranho.

Provavelmente o PostgreSQL não detectou a queda da conexão.
Você falou em Wireless, isso pode acontecer mesmo.

Eu pedi pra todos sairem, vi que não havia mais conexão, só a minha,
então tentei alterar o tal registro, mas não foi, ele só liberou depois
que restartei o postgres.

Só a título de comparação, quando usava o MySQL nesse mesmo conceito que
trabalho não ocorria isso, um colega disse aqui na lista que o modo do
MySQL trabalhar é diferente, é tipo um espelho, tanto é que posso
alterar uma tabela colocando ou inserindo novos campos que ele não
grita. No postgres já vi que isso não é possível, mas compreendo que são
arquiteturas diferentes.

Isso é possível sim.
E o MySQL com InnoDB também tem locks semelhantes.

Só preciso compreender melhor o postgres pra lidar com essas situações

Seu servidor de banco de dados é Linux.
Considere usar keep alives. Veja em [1].

Eu uso em alguns servidores:
tcp_keepalives_idle=60
tcp_keepalives_interval=30
tcp_keepalives_count=2

Isso faz com que conexões fechadas pela ponta remota (o que inclui problemas em rede, firewalls e nats malucos) serem detectadas pelo servidor PostgreSQL e em até 2 minutos a conexão morre por força do servidor.

[1] http://www.postgresql.org/docs/9.2/static/runtime-config-connection.html

[]s

__________________________________
Flavio Henrique A. Gurgel
Líder de Projetos Especiais
Consultoria, Projetos & Treinamentos 4LINUX
Tel1: +55-11.2125-4747 ou 2125-4748
www.4linux.com.br
email: [email protected]
______________________________
FREE SOFTWARE SOLUTIONS
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a