Wagner Bonfiglio escreveu:
> Eu tenho um site sobre filmes, que também é uma reede social. Temos
> atualmente cerca de 1000 usuários e 11000 filmes.
>
> A modelagem, devido a alguns cálculos que são feitos, acabou definindo
> que cada usuário tenha uma entrada em uma tabela relacionando cada um
> dos outros usuários, além de uma entrada em outra tabela que relaciona
> cada usuário com cada filme.
>
> Ou seja, quando um usuário é criado, eu tenho que inserir 1000
> entradas na tabela q liga usuarios com usuarios, e 11000 entradas na
> tabela que relaciona filmes com usuarios.
Afe Deus, quais cálculos levaram vocês a uma modelagem destas??
> Isso é feito através de uma função em plpgsql disparada por uma
> trigger no insert da tabela de usuarios.
Nuss.
> O problema pro usuário é ter que esperar esses 12000 inserts
> acontecerem (atualmante esta demorando 2min, mas a tendencia é
> continuar crescendo tanto em usuarios como em filmes) durante o
> cadastro.
>
> Já não sei mais o que fazer para melhorar isso, pois tem muitos
> usuários que não esperam os inserts e fecham a página no meio,
> causando diversos erros na hora de tentar logar no site...
Que tal refazer a modelagem. Esta forma de fazer está claramente
equivocada.
> Minhas dúvidas são:
> - essa prática de inserir todas essas entradas na hora do cadastro é
> errado ou não tem problema?
É errado, melhor dizendo, não recompendávelem pelo menos 99,99999% dos
casos.
> - a demora é porque o servidor está muito lento (ou seja, esses 12000
> inserts deveriam ser mais rapidos)??
A demora é porque a forma de fazer está equivocada. Para que ou porque
isso tudo?? Poderia explicar melhor para tentarmos ajudar mais
efetivamente??
> - você chegou aqui entendendo o que eu quis dizer? hahaha não sei se
> fui muito claro no problema, mas uma coisa interessante de citar é que
> essas entradas entre todos os clientes e entre os clientes e todos os
> filmes é importante pois o site calcula notas sugeridas para cada
> usuário, dependendo dos votos deles e da semelhança dos votos com
> outros usuários.
Existem formas muito mais simples de se fazer estes cálculos, caso
contrário o orkut teria um lag de horas ao se cadastrar um novo usuário.
Vocês precisam repensar esta forma, ou contratar uma consultoria para
fazê-lo. Mas nada poderá ser feito se vocês não tiverem a clara idéia de
que isto precisa ser mudado.
> Bom, se precisarem de mais detalhes sobre o caso eu posso comentar
> mais aqui (não sei se tem problema em passar o site, então achei
> melhor nem colocar o link). Mas espero que possam me ajudar de
> qualquer forma, qualquer toque será bem vindo!
Veja, seu problema não é o PostGreSql, é modelagem. A forma de fazer
não está legal e precisa ser repensada. Acredito que um DBA na equipe
pudesse auxiliar mais efetivamente.
--
Shander Lyrio
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral