CONEXAO LENTA
Beleza Galera????
Postei um tópico que perguntava qual era o problema da minha aplicação já que a mesma derepente ficara muito lenta. pessei que fosse componentes demais ou algo parecido. só que percebi que é a conexão com o Mysql que ficou quase parando, leva serca de 20 segundos para realizar uma conexao com o mysql..
tipo um simples comando de abrir o BD.não sei nem tenho nem ideia do que possa estar acontecendo. Por favor me ajudem....
Só para ter serteza de que não era a minha aplicação, fiz um pequeno exemplo de cadastro de um cliente usando o mysq, e ocorreu o mesmo problema; leva serca de 15 segundos para retornar o sucesso da inclussão.
Nota: o Sistema operacional fica travado enquanto não é retornado qualquer que seja o comando de conexão com o BD.
Valeu.........
Postei um tópico que perguntava qual era o problema da minha aplicação já que a mesma derepente ficara muito lenta. pessei que fosse componentes demais ou algo parecido. só que percebi que é a conexão com o Mysql que ficou quase parando, leva serca de 20 segundos para realizar uma conexao com o mysql..
tipo um simples comando de abrir o BD.não sei nem tenho nem ideia do que possa estar acontecendo. Por favor me ajudem....
Só para ter serteza de que não era a minha aplicação, fiz um pequeno exemplo de cadastro de um cliente usando o mysq, e ocorreu o mesmo problema; leva serca de 15 segundos para retornar o sucesso da inclussão.
Nota: o Sistema operacional fica travado enquanto não é retornado qualquer que seja o comando de conexão com o BD.
Valeu.........
E aà EDILSON, tudo bem ?
Bom, nesse caso receio que seu SO esteja com problemas, se ainda não fez, Execute a limpeza de arquivos temporários, passe o Scandisk em modo completo (é aquele demorado mesmo) no seu HD, depois passe o desfragmentador. Geralmente isso funciona. Tente aÃ, perde um pouco de tempo, até mesmo sua máquina ficará melhor depois disso.
Bom, nesse caso receio que seu SO esteja com problemas, se ainda não fez, Execute a limpeza de arquivos temporários, passe o Scandisk em modo completo (é aquele demorado mesmo) no seu HD, depois passe o desfragmentador. Geralmente isso funciona. Tente aÃ, perde um pouco de tempo, até mesmo sua máquina ficará melhor depois disso.
Edilson
Além do problema de manutenção no SO, que pode demandar atraso no acesso a arvquivos, o que compromente sensivelmente um Banco de Dados, além da Modelagem de Dados errà 'nea, é a quantidade de Conexões simultà ¢neas.
Por favor, coloque aqui como você DECLARA E Acessa o BD, tanto conexões quanto RecordSets e onde estão definidos, também o tipo de RecordSet influi e muito.
[s95]
Além do problema de manutenção no SO, que pode demandar atraso no acesso a arvquivos, o que compromente sensivelmente um Banco de Dados, além da Modelagem de Dados errà 'nea, é a quantidade de Conexões simultà ¢neas.
Por favor, coloque aqui como você DECLARA E Acessa o BD, tanto conexões quanto RecordSets e onde estão definidos, também o tipo de RecordSet influi e muito.
[s95]
beleleza galera, mais este problema so ocorre com uma conexão mysql, quando ultilizo com o access 2000 fica tudo beleza...
de qualquer forma faço a conexão da seguinte forma:
"em um módulo"
"na guia general"
Public db As New ADODB.Connection
Public rsTabela As New ADODB.Recordset
Public Function conectar(usuario As TextBox, senha As TextBox) As Boolean
On Error GoTo openBD
strconn = "DRIVER={MySQL ODBC 3.51 Driver};"
strconn = strconn & "SERVER=localhost;"
strconn = strconn & "DATABASE=manager;"
strconn = strconn & "UID=" & usuario & ";PWD=" & senha.Text & ";OPTION=3"
db.ConnectionString = strconn
db.CursorLocation = adUseClient
db.Open
conectar = True
Exit Function
openBD:
If (Err.Number <> 0) Then
MsgBox "ERRO : " & Err.Number & Err.Description & vbInformation
conectar = False
End If
End Function
"quando quero ir para um determinado form mando inicialmente abrir o BD com uma chamada a função,que tambem fica em um modulo, da seguinte forma:"
Public Function openConexao()
On Error GoTo AbreConexao
db.Open
Exit Function
AbreConexao:
If (Err.Number - vbObjectError = -245755) Then
MsgBox "ERRO 2: " & Err.Number - vbObjectError & Err.Description & " Erro ao tentar abrir uma conexão. ", vbCritical
End If
End Function
de qualquer forma faço a conexão da seguinte forma:
"em um módulo"
"na guia general"
Public db As New ADODB.Connection
Public rsTabela As New ADODB.Recordset
Public Function conectar(usuario As TextBox, senha As TextBox) As Boolean
On Error GoTo openBD
strconn = "DRIVER={MySQL ODBC 3.51 Driver};"
strconn = strconn & "SERVER=localhost;"
strconn = strconn & "DATABASE=manager;"
strconn = strconn & "UID=" & usuario & ";PWD=" & senha.Text & ";OPTION=3"
db.ConnectionString = strconn
db.CursorLocation = adUseClient
db.Open
conectar = True
Exit Function
openBD:
If (Err.Number <> 0) Then
MsgBox "ERRO : " & Err.Number & Err.Description & vbInformation
conectar = False
End If
End Function
"quando quero ir para um determinado form mando inicialmente abrir o BD com uma chamada a função,que tambem fica em um modulo, da seguinte forma:"
Public Function openConexao()
On Error GoTo AbreConexao
db.Open
Exit Function
AbreConexao:
If (Err.Number - vbObjectError = -245755) Then
MsgBox "ERRO 2: " & Err.Number - vbObjectError & Err.Description & " Erro ao tentar abrir uma conexão. ", vbCritical
End If
End Function
Edilson
Esta forma não deve ser utilizada no VB6
Altera para
Public db As ADODB.Connection
Public rsTabela As ADODB.Recordset
e também inclua:
Public Function conectar(usuario As TextBox, senha As TextBox) As Boolean
Set db = New ADODB.Connection
Set rsTabela = New ADODB.RecordSet
[txt-color=#ff0000]**** Você não informou COMO os RecordSets estão sendo abertos [/txt-color]
Não utilize NEW quando declarar, porque o VB não consegue destruir e a conexão fica aberta, ele perde a referência mas o ADO não fecha, isto sobrecarrega o mesmo e deixa lente, o mesmo para RecordSets.
Aliás, RecordSets deveriam ser abertos localmente e fechados!
[s50]
Esta forma não deve ser utilizada no VB6
Public db As New ADODB.Connection
Public rsTabela As New ADODB.Recordset
Altera para
Public db As ADODB.Connection
Public rsTabela As ADODB.Recordset
e também inclua:
Public Function conectar(usuario As TextBox, senha As TextBox) As Boolean
Set db = New ADODB.Connection
Set rsTabela = New ADODB.RecordSet
[txt-color=#ff0000]**** Você não informou COMO os RecordSets estão sendo abertos [/txt-color]
Não utilize NEW quando declarar, porque o VB não consegue destruir e a conexão fica aberta, ele perde a referência mas o ADO não fecha, isto sobrecarrega o mesmo e deixa lente, o mesmo para RecordSets.
Aliás, RecordSets deveriam ser abertos localmente e fechados!
[s50]
Na verdade eu so abria a conexão a cada form que eu entrasse com uma chamada a seguinte função dentro do evento load do form em questão,nunca abria explicitamente um recordset, da seguinte forma:
Public Function openConexao()
On Error GoTo AbreConexao
db.Open
Exit Function
AbreConexao:
If (Err.Number - vbObjectError = -245755) Then
MsgBox "ERRO 2: " & Err.Number - vbObjectError & Err.Description & " Erro ao tentar abrir uma conexão. ", vbCritical
End If
End Function
"em seguida fazia uma consulta do tipo :
Set rsTabela = db.Execute("select * from usuario where usuLogin='" & txtUsuario & "' ")
"quando saia deste form chamava a função que fechava a conexão:
Public Function closeConexao()
On Error GoTo FechaConexao
db.Close
Exit Function
FechaConexao: If (Err.Number <> 0) Then
MsgBox "ERRO 3: " & Err.Number - vbObjectError & Err.Description & " Erro ao tentar encerrrar uma conexão.", vbCritical
End If
Exit Function
End Function
Public Function openConexao()
On Error GoTo AbreConexao
db.Open
Exit Function
AbreConexao:
If (Err.Number - vbObjectError = -245755) Then
MsgBox "ERRO 2: " & Err.Number - vbObjectError & Err.Description & " Erro ao tentar abrir uma conexão. ", vbCritical
End If
End Function
"em seguida fazia uma consulta do tipo :
Set rsTabela = db.Execute("select * from usuario where usuLogin='" & txtUsuario & "' ")
"quando saia deste form chamava a função que fechava a conexão:
Public Function closeConexao()
On Error GoTo FechaConexao
db.Close
Exit Function
FechaConexao: If (Err.Number <> 0) Then
MsgBox "ERRO 3: " & Err.Number - vbObjectError & Err.Description & " Erro ao tentar encerrrar uma conexão.", vbCritical
End If
Exit Function
End Function
Galera ainda precisso de respostas....
Tópico encerrado , respostas não são mais permitidas