Jump to content


Photo

Mysql Lento Pra Realizar Consultas


  • Faça o login para participar
17 replies to this topic

#1 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 25/11/2004, 00:51

Olá. Tenho uma intranet que funciona em uma rede pequena (menos de 20 máquinas). Recentemente, atualizei o MySQL para o 4.1.7. Foi aí que meu problema começou... Ele tem sido lendo quando o assunto é realizar as consultas. Se eu fizer uma consulta que vai retornar 200 registros, funciona bem. Mas, se eu fizer 200 consultas que retornam um registro, ele demora tempo suficiente pra dar timeout no php. Acontece que, na programação, eu tenho loops que precisam de várias consultas, não tem como mudar. Na outra versão do MySQL, que, se não me engano, era a 4.0, funciona tudo direitinho. Agora a pergunta: há alguma configuração que eu possa fazer pra otimizar o desempenho do meu servidor e finalmente resolver esse problema?

Obrigado.

#2 victormangia

victormangia

    Doutor

  • Usuários
  • 783 posts
  • Sexo:Masculino
  • Localidade:barra mansa - rj

Posted 25/11/2004, 08:01

Cara eu tambem tava com esse problema e a unica solução que encontrei foi a migração para o Postgres, melhorou muito o desempenho, recomendo.
pra intranet é melhor

Edição feita por: victormangia, 25/11/2004, 08:02.


#3 Prog

Prog

    ...

  • Ex-Admins
  • 3761 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro/RJ
  • Interesses:TI, Software Livre, Design Digital e Rock'n'Roll.

Posted 25/11/2004, 08:10

Vamos a alguns fatos.

O MySQL 4.1 tem recursos que o 4.0 não suporta, talvez fosse interessante adaptar algumas das suas consultas para usar alguns desses recursos, principalmente no que diz respeito a sub-consultas.

Todas as tabelas do seu banco de dados estão indexadas?

Existem alguns recursos de otimização que podem ser indicados no arquivo de configuração do MySQL, porém, não acredito que este seja o problema.

A aplicação que esta se comunicando com o MySQL é em ASP, esta usando ODBC para realizar esta comunicação? Em casi afirmativo, fez a atualização dos drivers?

Se puder dar um exemplo de um desses processos lentos, a gente pode estudar alternativas, vc mostra a estrutura de 2 ou 3 tabelas e os selects que estão sendo utilizados para gerar os resultados para uma determinada página da sua intranet.

Qualquer coisa... tamos aí. (y)
------
Mero mortal!

#4 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 25/11/2004, 12:48

Estou usando PHP. O problema está nas consultas que têm muitas relações.

"SELECT DISTINCT SisAreas.Id, SisAreas.Area FROM SisAreas, SisGrupos, SisLinks, SisPerms, SisGrUsr WHERE SisGrupos.Id=$Linha[2] AND SisGrUsr.Usuario=$UId AND SisGrupos.Id=SisGrUsr.Grupo AND SisAreas.Grupo=SisGrupos.Id AND SisLinks.Area=SisAreas.Id AND SisPerms.Usuario=$UId AND SisPerms.Link=SisLinks.Id AND SisLinks.Ocultar='N' ORDER BY SisAreas.Area"
Esse é um exemplo. As outras são mesmo estilo. As tabelas têm entre 2 e 5 campos. Eu quis fazer tudo numa consulta só, justamente pra reduzir a quantidade de linhas no PHP e ficar mais rápido. E foi o que aconteceu até eu atualizar a versão. Uma outra coisa que notei foi que essa nova versão trabalha com o formato INNODB (ou alguma coisa assim), e na outra versão eu usava o MyISAM. Aí, pra ficar atualizado, converti todo o banco de dados para esse novo formato. Será que tem alguma coisa a ver?

#5 brunoalves

brunoalves

    Linux user #392843

  • Ex-Admins
  • 1018 posts
  • Sexo:Não informado
  • Localidade:Rio de Janeiro

Posted 25/11/2004, 12:58

LeoB,

você está indexando os campos utilizados no Where?

Os seguintes relacionamentos foram feitas no DB (o InnoDB permite relacionamento por chave estrangeira)?
SisGrupos.Id=SisGrUsr.Grupo
SisAreas.Grupo=SisGrupos.Id
SisLinks.Area=SisAreas.Id
SisPerms.Link=SisLinks.Id

Abraço.

#6 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 25/11/2004, 13:05

Não acho que seja esse o problema, porque, como eu disse, antes funcionava. De qualquer modo, não sou muito fã de relacionar direto no BD. Gosto de sempre fazer pelo SQL. Será esse o problema?

#7 brunoalves

brunoalves

    Linux user #392843

  • Ex-Admins
  • 1018 posts
  • Sexo:Não informado
  • Localidade:Rio de Janeiro

Posted 25/11/2004, 13:17

Pode ser, já que no MyIsam não havia FK, isso não afetava a performance, mas no InnoDB existe.

Derrepente algumas configurações não estão ideias, de uma Olhada em http://dev.mysql.com...oDB_tuning.html para melhoria de performance com InnoDB.

Abraço.

#8 Prog

Prog

    ...

  • Ex-Admins
  • 3761 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro/RJ
  • Interesses:TI, Software Livre, Design Digital e Rock'n'Roll.

Posted 25/11/2004, 13:53

Sobre InnoDB, de uma olhada tb neste post, tem uns links e artigos com informações que devem ser levadas em consideração:
http://forum.wmonlin...showtopic=94408

No mais, se não for utilizar os recursos que as tabelas do tipo InnoDB oferecem, melhor voltar a usar MyISAM.
------
Mero mortal!

#9 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 03/12/2004, 18:23

Eu estava conversando com um professor, e ele sugeriu que eu aumentasse a memória do MySQL. Lendo a documentação, encontrei o seguinte:

http://dev.mysql.com...parameters.html

Resolvi então tentar. Antes de mudar as opções, fiz uns testes pra ver como o MySQL estava se comportando. Vi que ele estava elevando o uso do processador a 100% e usando cerca de 10MB da memória. Seguindo o link acima, fui aumentar o tamanho da variável key_buffer_size. No exemplo, está 64M, mas lá é pra 256MB de RAM. Como aqui tem 624MB, aproveitei e dobrei os valores. Ficou assim:

C:/mysql/bin/mysqld-nt.exe --key_buffer_size=128M --table_cache=512 --sort_buffer_size=8M --read_buffer_size=2M

Fui então rodar o meu sistema pra ver como as coisas seriam dessa vez. Para a minha supresa, o MySQL continuou usando 10MB, segundo a lista do gerenciador de processos. E se eu peço pra mostrar as variáveis de ambiente, com o comando SHOW VARIABLES, ele mostra os valores que eu passei na hora de inicializar... Alguma sugestão?

#10 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 05/12/2004, 11:32

Consegui. Meio à contragosto dei uma enxugada nas minhas SQLs... Agora está funcionando bem.

#11 Prog

Prog

    ...

  • Ex-Admins
  • 3761 posts
  • Sexo:Masculino
  • Localidade:Rio de Janeiro/RJ
  • Interesses:TI, Software Livre, Design Digital e Rock'n'Roll.

Posted 06/12/2004, 08:13

Oq vc chama de "enxugada" nas suas SQLs???
------
Mero mortal!

#12 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 06/12/2004, 12:37

Reduzi o número de tabelas relacionadas. Digamos que eu sempre estava conferindo uma informação que já havia sido conferida numa consulta anterior. Então decidi remover os trechos desnecessários para o bom funcionamento. Deu certo.

#13 HaroNism

HaroNism

    Super Veterano

  • Usuários
  • 15385 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 27/09/2017, 08:09

Amoxicillin Doasge For 45 Pound Child Achat Viagra Ligne France How To Last Longer Tips cialis Vente Viagra Sur Internet Cialis Tratamiento Impotencia

#14 LarPhozyHah

LarPhozyHah

    Super Veterano

  • Usuários
  • 14515 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 28/09/2017, 20:53

Admission Post Clomid Brand Viagra Hawaii Viagra A Poco Prezzo cialis online Priligy Generika Dapoxetine Propecia Para El Cabello
Furazolidone Cialis Tumore Tolerance To Amoxicillin cialis buy online Buy Cialis Online With Prescription Cialis Barcelona Wirkung Viagra Alkohol

#15 HaroNism

HaroNism

    Super Veterano

  • Usuários
  • 15385 posts
  • Sexo:Masculino
  • Localidade:San Miguel de Tucuman

Posted 09/10/2017, 11:33

Viagra Professionnel 100 Mg Viagra Prescription Nhs viagra How Does Amoxicillin Effect The Body
Finasteride Vs Propecia Hair Loss Treatment buy viagra online Sinus Infection Amoxicillin Isotretinoin 10mg Skin Health Prix Pilule Viagra En Pharmacie




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq