Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Mysql X Postgresql X Firebird


rumachella

Pergunta

Mysql, Postgresql e Firebird.

Estou fazendo uns testes nos três bancos.

Dentre estes, estou fazendo joins de 2, 3, .. e 9 tabelas na ordem crescente de inclusão das tabelas, ou seja, o join 3 utiliza as duas tabelas em join 2, o join 4 utiliza as três tabelas em join 3 e assim sucessivamente.

Ao realizar o quarto join, o MYSQL simplesmente não retorna nenhuma resposta, e fica esperando eternamente ... onde o sistema fica praticamente travado, não dando chance para realizar outra tarefa.

Estou usando a ferramenta nativa "Mysql command line client". Já tentei várias formas, reinstalar o banco, comandos 'flush table', 'flush', alterar algumas variáveis e até agora não obtive sucesso. Dá a impressão que ele está consumindo toda a memória.

Quem tiver alguma idéia de como me ajudar . . . por favor me dê uma AJUDA

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Verifique se os campos utilizados nas cláusulas ON que estabelecem os joins, estão indexados.

A matemárica é simples. Pois quando não indexados eles tem que fazer um TABLE SCAN (pesquisa completa com varredura registro a registro em toda(as) a(s) tabela(s)) nas tabelas do(s) relacionamento(s). E isto degrada a performance em forma exponencial. Exemplo:

Tendo 3 tabelas, A, B e C. Se cada uma possuir 1000 registros, a pesquisa sem indice fará uma busca de A x B x C, ou seja 1.000.000.000 de pesquisas para encontrar o que você deseja, mesmo se o que você deseja esteja apenas na primeira linha de cada tabela.

att

Denis Courcy

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --rumachella --
Verifique se os campos utilizados nas cláusulas ON que estabelecem os joins, estão indexados.

A matemárica é simples. Pois quando não indexados eles tem que fazer um TABLE SCAN (pesquisa completa com varredura registro a registro em toda(as) a(s) tabela(s)) nas tabelas do(s) relacionamento(s). E isto degrada a performance em forma exponencial. Exemplo:

Tendo 3 tabelas, A, B e C. Se cada uma possuir 1000 registros, a pesquisa sem indice fará uma busca de A x B x C, ou seja 1.000.000.000 de pesquisas para encontrar o que você deseja, mesmo se o que você deseja esteja apenas na primeira linha de cada tabela.

att

Denis Courcy

Denis, valeu pela dica. O interessante é que tanto o Firebird como o PostgreSQL conseguiram realizar as consultas mesmo sem o uso de índices ( sendo 9 o total de tabelas e 20.000 registros cada uma - total de 360.000 registros) enquanto o MySQL só conseguiu fazer os mesmos testes com a utilização de chaves ou índices.

Eu também havia formado uma base menor com 2.000 registros cada tabela, mas o MySQL só conseguiu fazer o JOIN até a junção de 3 tabelas. A partir daí demora no mínimo 2 horas - não fiquei esperando até quando ele concluiria o teste.

Desde já, agradecido e um abraço...

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...