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

Responder a