Clipper On Line • Ver Tópico - ADO - conexão única ou várias

ADO - conexão única ou várias

Discussão sobre SQL

Moderador: Moderadores

 

ADO - conexão única ou várias

Mensagempor JoséQuintas » 01 Fev 2015 15:18

Estou com essa dúvida no momento.
É que infelizmente no Windows, nem tudo que parece certo é realmente certo.
Uso conexão MySql, e há a opção de usar uma única conexão ou várias conexões.

Uma única conexão
A vantagem é justamente ser uma única conexão.
A desvantagem é existir limite de tempo pra conexão parada, ou até programas afetarem isso.

Várias conexões
A vantagem é que cada consulta se torna independente.
As desvantagens são o tempo de conexão, e justamente criar várias conexões.
O Windows tem o limite de "half open connections", que são as conexões pendentes, que não são consideradas abertas ou fechadas.

Então a dúvida é sobre qual das duas seria a melhor opção, e no caso da primeira, se seria melhor deixar um programa zumbi mantendo a conexão ativa.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

ADO - conexão única ou várias

Mensagempor sygecom » 01 Fev 2015 15:27

José,
Acho que isso não é do Windows, e sim do Mysql, que deve ter um parâmetro para matar conexões ociosas, no PostgreSQL tem um recurso de pool de conexão, o Mysql deve ter algo igual, que reaproveita conexões perdidas ou ociosas.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7006
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 130 vezes

ADO - conexão única ou várias

Mensagempor JoséQuintas » 01 Fev 2015 17:01

Tinha esquecido isso.... tem essa também.
Tem o tempo de conexão do lado do cliente, e do lado do servidor.
Além da conexão MySql em si (servidor MySql e cliente MySql), tem o tempo do Windows.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

ADO - conexão única ou várias

Mensagempor JoséQuintas » 01 Fev 2015 19:28

Complementando:

No servidor MySql dá pra configurar o tempo de conexão ociosa.
No Windows (servidor ou cliente) dá pra configurar o tempo de conexão ociosa.
No cliente MySql dá pra configurar o tempo de conexão ociosa.
Então são 4 situações que podem fechar a conexão ociosa.

Tem também o tempo que o servidor considera um terminal ocioso, e desconecta-o da rede Windows, não sei se afeta a conexão MySql.

Infelizmente o Windows é cheio de possibilidades.

Tem até programa de banco que pode fechar a conexão.

Estou começando a transformar de várias conexões em uma só.
Vamos ver o que acontece.

Por enquanto percebi que com várias conexões meu roteador chegou a congelar.
Só queria tentar confirmar, pra não descobrir algo ruim só depois de tudo modificado e instalado nos clientes.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

ADO - conexão única ou várias

Mensagempor JoséQuintas » 16 Fev 2015 14:01

Além do limite de tempo, se usar provedor também existe o limite de conexões.
Eles costumam colocar um limite pequeno quando se trata de conexão externa, acesso fora do site.

É triste esbarrar com limitações desse tipo.
Torna o projeto que era certo em um projeto duvidoso.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

ADO - conexão única ou várias

Mensagempor JoséQuintas » 17 Fev 2015 12:18

Aconteceu aqui hoje:
Lost connection to MySQL server during query

Por enquanto só imagino criar uma thread usando a conexão a cada intervalo de tempo, já que o parâmetro conexão:State não detecta que a conexão se foi.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

ADO - conexão única ou várias

Mensagempor cjp » 03 Set 2015 19:41

Caro Quintas e demais colegas,

Pesquisando no fórum, observei este post, que coincide com um problema que tenho usualmente: o provedor limita as conexões, e eu frequentemente esbarro com estouro do limite de conexões.

Gostaria de saber como seria essa questão de usar apenas uma conexão. Atualmente, no meu programa, eu uso uma conexão para cada consulta, mas o tempo da conexão é razoavelmente longo, seria bom manter uma conexão só. Como fazer isso?
Inacio de Carvalho Neto
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1527
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

ADO - conexão única ou várias

Mensagempor JoséQuintas » 02 Nov 2015 12:32

Tava repassando algumas mensagens, e vi que a sua ficou sem resposta.

Estou usando assim:

STATIC AppcnMySqlLocal


E passo a usar essa mesma conexão em todo aplicativo.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

ADO - conexão única ou várias

Mensagempor cjp » 02 Nov 2015 15:51

Já fiz alguns testes neste sentido, meu caro. Fica sem dúvida mais rápido. Mas estou enfrentando um problema: se a conexão fica algum tempo sem ser usada, ela desconecta. Isso é normal? Como resolver isso?
Inacio de Carvalho Neto
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1527
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

ADO - conexão única ou várias

Mensagempor JoséQuintas » 02 Nov 2015 17:03

Sim.
No default de um servidor Windows, com ou sem banco de dados, os terminais são desconectados se ficarem ociosos.
No default das conexões idem.
No default do servidor MySQL idem.
Só aí, já são 3 pontos de interferência.

Não costumo ter esse tipo de erro (receberia email de erro, caso acontecesse).

Criei minha rotina para o Execute() do MySQL.
Como precaução, testo se a conexão está aberta, e reabro se precisar.

   IF cnMySql:State() != 1
      cnMySql:Open()
   ENDIF
   cnMySql:Execute()
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

ADO - conexão única ou várias

Mensagempor cjp » 02 Nov 2015 18:14

Interessante. Eu uso RDDINFO. Vc sabe dizer se tem como testar assim na RDDINFO?
Inacio de Carvalho Neto
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1527
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes

ADO - conexão única ou várias

Mensagempor JoséQuintas » 02 Nov 2015 19:09

Nesse caso vai ter que ver com quem usa essa biblioteca.
É provável que dê pra alterar nos fontes, mas vai ter que ver com o autor.

Uma opção, quebra-galho, seria disparar uma consulta qualquer a cada intervalo de tempo, só pra manter a conexão ocupada.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18010
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

ADO - conexão única ou várias

Mensagempor cjp » 03 Nov 2015 00:21

Entendido, muito obrigado.
Inacio de Carvalho Neto
cjp
Usuário Nível 6

Usuário Nível 6
 
Mensagens: 1527
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 10 vezes
Mens.Curtidas: 20 vezes




Retornar para SQL

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 7 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro