Ola pessal!!
Estou desenvolvendo uma aplicação em java com MySQL, estava tudo bem em quanto eu estava rodando o servidor de MySQL na mesma maquina q a aplicação!! Mas quando eu fiz minha aplição conectar em um servidor de MySQL em outra maquina acontenceu uma tremenda lentidão! Também estou percebendo que existem muitos processoes em estado de “Sleep” quando executo o comando “Show precesslist” no MySQL, não sei se isso eh nomal, creio eu que não! Ja estou a vários dias tentando resolver isso, com as ideias que tive e que encontrei, mas ainda esta estremamente lenta!
Aqui está o fonte:
Tem quer ser analisado o seu Modelo de Dados, se as entidades estiverem coerentes e relacionadas, a partir daí vc consegue isolar o problema e identificar se é algo no banco de dados.
Porque é que você usa esse tipo de statement (com CONCUR_UPDATABLE)? Se for só pra usar com um SELECT, e não para efetuar a atualização de algumas linhas, sobrecarrega algum lugar (não sei se no servidor ou no cliente).
Normalmente é melhor usar o statement padrão, que não permite contar as linhas (você tem de ir acumulando os resultados em um ArrayList ou Vector), mas não sobrecarrega o servidor.
M
magorv
Ola foia, nao estou ultilizando nao.
Amigo, creio eu que não. Porque localmente a velocidade é incrivel.
Thingol, eu removi os parametros do statement e continua do mesmo jeito!
Aae galera obrigado a todos!!
Se alguem ainda terver mais alguma sujestão posta por favor, eu não sei o q fazer mais!
T
thingol
Uma coisa que pode ocorrer é um problema de lentidão no instante de resolver o hostname para IP. Ou seja, se o nome da máquina do servidor é “magorvserver” e o IP for “169.128.23.45”, quanto tempo a máquina cliente leva para conectar (ou seja, o seu problema não é a query e sim a conexão?)
Se for isso, troque o nome pelo IP na string de conexão e tente novamente.
M
magorv
Amigo bao observerção essa sua!! Mas sempre usei o IP e nao o nome!!
T
thingol
Então você já eliminou uma causa (o tempo de conexão).
Você pode investigar outras coisas:
Qual o tipo de rede que liga as duas máquinas? (10MB, 100MB) Aproveite e veja se há algum problema de rede.
Muitos dados estão “passeando” pela rede? (ou seja, você dá um select sem where, puxando a tabela inteira, ou então você dá um select * que retorna 200 campos e pega só 2 campos? ) Se for isso, você pode otimizar as queries (ponha um critério melhor, e dê select apenas dos campos que vai usar)
etc.
foia
Faz o seguinte:
1 - ping do app pro bd;
2 - telnet do app na porta do mysql.
3 - tentou usar pool de conexões ?
Demora ?!
M
magorv
thingol:
Então você já eliminou uma causa (o tempo de conexão).
Você pode investigar outras coisas:…
amigo eh uma rede de 100MB, a rede eh pequena soh possue 4 maquinas
ate agora nao ouve problema nenhum na rede
em questão do select, eu sempre fiz somente com campos q eu precizei,e qualquer outro comando sql eh lento,
foia:
Faz o seguinte:
1 - ping do app pro bd;
2 - telnet do app na porta do mysql…
o ping esta normal
o telnet ainda noa testei
em questão do pool de conexão é o seguinte:
percebemos que a aplicação esta estremamente rapida quando executanda no mesmo servidor do MySQL, entao iremos ciar uma aplicação q irar rodar no servidor somente para executar o comando SQL, e a aplicação “cliente” se comunica com ela atravez de sockets UDP.