ADO - conexão única ou várias
Moderador: Moderadores
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
ADO - conexão única ou várias
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.
É 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 mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
ADO - conexão única ou várias
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.
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
xHarbour.org + Hwgui + PostgreSql
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
ADO - conexão única ou várias
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.
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 mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
ADO - conexão única ou várias
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.
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 mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
ADO - conexão única ou várias
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.
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 mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
ADO - conexão única ou várias
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.
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 mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
ADO - conexão única ou várias
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?
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
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
ADO - conexão única ou várias
Tava repassando algumas mensagens, e vi que a sua ficou sem resposta.
Estou usando assim:
E passo a usar essa mesma conexão em todo aplicativo.
Estou usando assim:
Código: Selecionar todos
STATIC AppcnMySqlLocal
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
ADO - conexão única ou várias
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
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
ADO - conexão única ou várias
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.
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.
Código: Selecionar todos
IF cnMySql:State() != 1
cnMySql:Open()
ENDIF
cnMySql:Execute()
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
ADO - conexão única ou várias
Interessante. Eu uso RDDINFO. Vc sabe dizer se tem como testar assim na RDDINFO?
Inacio de Carvalho Neto
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
ADO - conexão única ou várias
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.
É 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 mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
