Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 2774 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Amigos, como sei que aqui tem pessoas que usam Delphi e Firebird resolvi arriscar.

Estou com um sistema em Delphi Xe , DBExpress,  Firebird 2.5 Super Classic  e 55 estações.

A maior parte do processamento é realizado pelo banco por SP ( Stored Procedures )

Estranhamente verifiquei travamentos nessas SP, mesmo no aplicativo estando sendo explicitamente iniciado e finalizado uma transação

BeginTransaction(TDBXIsolations.ReadCommitted), CommitFreeAndNil(T);

Quando eu usava os componentes IBX , fazia meu StartTransaction e Commit e não havia esse problema.

Comecei a criar em RunTime as conexões, iniciar , executar, finalizar a transação e destruir a conexão.

Um DBA que conversei ( especialista em Oracle ) disse que no Oracle não se deve manter conexões aberta por muito tempo e essa é a maneira correta.

Um colega que trabalha com Delphi disse que terei inúmeros problemas ao fazer as ações  fora da conexão principal.

Nos exemplos que vejo na internet vejo as aplicações por um SQLConnection criam uma conexao e tudo trafega dentro do contexto dessa conexão.

Percebi que a velocidade aumentou em muito, entretanto ainda não consegui fazer um teste com carga elevada e antes de colocar em produção resolvi perguntar aos especialistas do uso diário.

Obrigado.

 

Postado

Aqui na empresa utilizamos IBX apenas, com a conexão principal sendo criada no momento de criação do form principal, e as querys sendo criadas e destruidas dinamicamente.
 Nosso maior cliente utiliza 250 estações, com banco de 25GB, e a performace é muita boa.

Postado (editado)

Oi Osmar, obrigado pelo retorno.

Pois é eu já usei o IBX e procedia dessa maneira e se por exemplo eu executava uma SP ( Stored Procedures )  e dava o Commit  ela ficava livre.

No DBX ( versão do XE ) eu inicio a transação e executo a SP efetuo o Commit e se tento mexer na SP ela esta presa, tenho que fechar a aplicação.

O SQLConnection que esta vinculado ao Form principal esta configurado como 

commitretain=False
waitonlocks=True
isolationlevel=ReadCommitted

Para contornar isso, passei a criar uma conexão em tempo de execução e executar a SP efetuar o Commit e destruir a conexão, dessa forma a SP não fica travada.

Mas não sei se isso é também uma possibilidade normal de proceder ou uma "gambiarra"

 

Editado por Antonio Carlos L
  • 6 meses depois ...
  • Consultores
Postado

A regra de modo geral é: Mantenha uma transação aberta o menor tempo necessário possível.

 

Moderação: Tópico movido.

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • 2 semanas depois ...
Postado

 No DBX vai ter que criar uma procedure de starttransaction, eu tinha isso, mais eh para o componente mesmo nao eh procedure SQL.

 Se eu achar aqui posto pra vc, pq tem muitos anos que nem uso ele mais para FB.

  • Este tópico foi criado há 2774 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.