Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2180 connectés 

 


 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  420  421  422  ..  486  487  488  489  490  491
Auteur Sujet :

les développeurs de forums, les 3/4 des forums sont down /o\

n°1423666
omega2
Posté le 10-08-2006 à 14:20:15  profilanswer
 

Reprise du message précédent :
Rainbow_Ef reet > Tu l'insére en zéro et t'augmente tout le monde de 1. (bon, ok, c'est le point noir de la méthode)

mood
Publicité
Posté le 10-08-2006 à 14:20:15  profilanswer
 

n°1423672
Limit
Posté le 10-08-2006 à 14:26:23  profilanswer
 

oui il est même très noir :D

n°1423673
soulmanto
Chat Noir replica
Posté le 10-08-2006 à 14:26:41  profilanswer
 

Et comment tu gères les topics "sticky" en insérant en 0?

n°1423674
chaced
Posté le 10-08-2006 à 14:28:06  profilanswer
 

Et si on prend le raisonement a l'envers.
 
On a un champ position, qui indique le position, mais le plus gros chiffre se trouve en premier dans le classement.
 
Donc a la mise a jour ou a un insert, il suffit de faire un position=max(position) + 1
 
Bon apres il reste toujours le probleme en cas de suppression d'un topic, on est obligé d'avoir une table qui indexe les topics supprimés :D


---------------
CPU-Z | Timespy | Mes bd | Mon blog
n°1423678
Rainbow_Ef​reet
Posté le 10-08-2006 à 14:31:32  profilanswer
 

chaced a écrit :

Et si on prend le raisonement a l'envers.

 

On a un champ position, qui indique le position, mais le plus gros chiffre se trouve en premier dans le classement.

 

Donc a la mise a jour ou a un insert, il suffit de faire un position=max(position) + 1

 

Bon apres il reste toujours le probleme en cas de suppression d'un topic, on est obligé d'avoir une table qui indexe les topics supprimés  :D

 


Tu as 5 topic,
les numéros de position sont 1, 2, 3, 4, 5
Le 4 a une nouvelle réponse il prend donc la position 6 (5 + 1).
les numéros de position sont 1, 2, 3, 5, 6
On a un trou (le 4eme) sans avoir eu de suppréssion

n°1423681
chaced
Posté le 10-08-2006 à 14:33:54  profilanswer
 

ok a revoir :lol:
 
ça serait tellement plus simple d'utiliser un limit :(


---------------
CPU-Z | Timespy | Mes bd | Mon blog
n°1423683
Rainbow_Ef​reet
Posté le 10-08-2006 à 14:36:30  profilanswer
 

Il suffit d'utiliser limit mais pas sur n'importe quelle table  ;)

n°1423685
nraynaud
lol
Posté le 10-08-2006 à 14:38:19  profilanswer
 

omega2 a écrit :

c'est le point noir de la méthode


http://www.beaute-test.com/prod/img1892.gif


---------------
trainoo.com, c'est fini
n°1423694
chaced
Posté le 10-08-2006 à 14:44:44  profilanswer
 

Rainbow_Efreet a écrit :

Il suffit d'utiliser limit mais pas sur n'importe quelle table  ;)


 
Oui limit en reccuperant uniquement position, puis un petit left join avec les nombres réccupérés...


---------------
CPU-Z | Timespy | Mes bd | Mon blog
n°1423700
Rainbow_Ef​reet
Posté le 10-08-2006 à 14:48:19  profilanswer
 

chaced a écrit :

Oui limit en reccuperant uniquement position, puis un petit left join avec les nombres réccupérés...

 


Pour moi si tu fais un limit c'est justement pour t'abstenir de champ position donc non c'est uniquement pour récupérer les ID.
Ensuite une autre requête ira chercher des topics avec la commande sql IN ().
 
Et ce sans left join  :heink:

mood
Publicité
Posté le 10-08-2006 à 14:48:19  profilanswer
 

n°1423713
chaced
Posté le 10-08-2006 à 14:56:18  profilanswer
 

Rainbow_Efreet a écrit :

Pour moi si tu fais un limit c'est justement pour t'abstenir de champ position donc non c'est uniquement pour récupérer les ID.
Ensuite une autre requête ira chercher des topics avec la commande sql IN ().
 
Et ce sans left join  :heink:


 
Le left join c'est quand on a un mysql qui n'aime pas les requettes imbriquée ;)


---------------
CPU-Z | Timespy | Mes bd | Mon blog
n°1423721
Rainbow_Ef​reet
Posté le 10-08-2006 à 15:01:01  profilanswer
 

Non plus tu stock les ID's dans un tableau et tu fais :
 
IN('.implode(', ', $mesIDs).')
 
Ce qui fais deux requêtes sans left join.

n°1423727
Cyrius-c
Posté le 10-08-2006 à 15:02:40  profilanswer
 

EDIT: Nan jallais dire une connerie


Message édité par Cyrius-c le 10-08-2006 à 15:06:02
n°1423728
chaced
Posté le 10-08-2006 à 15:02:51  profilanswer
 

Avec une requette imbriqué tu te passes de ton retour a php, mysql traite tout de lui meme en une seule passe :)


---------------
CPU-Z | Timespy | Mes bd | Mon blog
n°1423734
Rainbow_Ef​reet
Posté le 10-08-2006 à 15:11:20  profilanswer
 

Certes mais quand mySQL ne gère pas les requêtes imbriqués, et qu'on ne veux pas utiliser LEFT JOIN et bien ce retour à PHP est donc bien pratique et je t'encourage à tester ses performances.

n°1423748
chaced
Posté le 10-08-2006 à 15:20:46  profilanswer
 

oui c'est sur, en fait faut faire les 2 cas, si mysql < 4.1 et >=


---------------
CPU-Z | Timespy | Mes bd | Mon blog
n°1423863
Cyrius-c
Posté le 10-08-2006 à 16:52:08  profilanswer
 

Je pense avoir trouvé une solution.
 
Si on fait un nouveau sujet dans une categorie comportant 100 pages on fait seulement 200 updates au lieux de 2000, et quand on ajoute une réponse dans la page 1 (donc dans la majorité des cas)ca fait rien du tout, quand on ajoute une réponse dans la page x, ca fait 2x update.
 
Je verifie une dernière fois ;)


Message édité par Cyrius-c le 10-08-2006 à 17:16:28
n°1423870
rosco
Posté le 10-08-2006 à 16:58:12  profilanswer
 

C'est le principe des pages marqueurs, une toutes les X topics, non? Je sais plus qui avait proposé ça plus haut...

n°1423888
Cyrius-c
Posté le 10-08-2006 à 17:14:48  profilanswer
 

Pas exactement. Tout topic a un numero de page, de sorte que j'update seulement 1 topic qui change de page.
Et après c'est nickel, parce-que ca fait SELECT * from sujet WHERE id-cat='' AND page='' ORDER BY reponse
 
Pas bien méchant comme requete ca :)

Message cité 1 fois
Message édité par Cyrius-c le 10-08-2006 à 17:17:06
n°1423907
Limit
Posté le 10-08-2006 à 17:30:26  profilanswer
 

ca peut pas marcher là, tu n'auras pas des pages avec le meme nombre de topic.

n°1423910
rosco
Posté le 10-08-2006 à 17:32:58  profilanswer
 

Wé d'accord, mais quand un topic change de page à la création d'un nouveau, y a pas qu'un seul topic à changer mais autant de topics que de pages dans la cat (le dernier topic de chaque page en fait) vu qu'on décale de 1 partout. Et si qqu'un remonte plusieurs topics des pages antérieures, faut à chaque fois updater toutes les positions de tous les topics de fin de page des pages d'avant, ça devient lourdingue.


Message édité par rosco le 10-08-2006 à 17:36:50
n°1423914
anthomicro
Posté le 10-08-2006 à 17:38:31  profilanswer
 

soulmanto a écrit :

Et comment tu gères les topics "sticky" en insérant en 0?


 
Le coup de l'update quand tu crées un topic ouais c'est le point noir, pour les sticky tu les fous en -1 et hop... t'es plus emmerdé (c'est ce que je fais)
 

Rainbow_Efreet a écrit :

Tu as 5 topic,
les numéros de position sont 1, 2, 3, 4, 5
Le 4 a une nouvelle réponse il prend donc la position 6 (5 + 1).
les numéros de position sont 1, 2, 3, 5, 6
On a un trou (le 4eme) sans avoir eu de suppréssion


 
Le problème de ça est qu'il faut stocker le nombre maxi de topics quelque part sinon t'as une requête en plus à faire, mais c'est pas une mauvaise idée car en cas de nouveau topic c'est instantané (max + 1) et en cas d'update, vu que t'as stocké le max quelque part, tu récupères l'id du topic en cours et tous les topics qui sont compris entre l'id du topic en cours et max ont leur marqueur de position diminué de 1, et le topic auquel tu réponds voit son id qui vaut l'id maxi.
 

Cyrius-c a écrit :

Pas exactement. Tout topic a un numero de page, de sorte que j'update seulement 1 topic qui change de page.
Et après c'est nickel, parce-que ca fait SELECT * from sujet WHERE id-cat='' AND page='' ORDER BY reponse
 
Pas bien méchant comme requete ca :)


 
Le problème est que tu peux plus dire à tes utilisateurs de choisir un nombre de topics par page, t'es bridé. Sinon ça serait pas con du tout de stocker des numéros de page, ça serait instantanné, mais en cas de suppression bonjour les emmerdes pour tout recalculer...

n°1423915
Cyrius-c
Posté le 10-08-2006 à 17:38:49  profilanswer
 

C'est exactement ce que j'ai dit.
Bah cest moins lourdingue qu'updater tous les sujets. SI j'ai 100 pages et que je crée un nouveau topic ca fait 200 update, c'est pas la mort

n°1423917
chaced
Posté le 10-08-2006 à 17:40:46  profilanswer
 

Donc faut mieux faire 200 update ou un limit qui trie seulement sur un index ? :D


---------------
CPU-Z | Timespy | Mes bd | Mon blog
n°1423919
rosco
Posté le 10-08-2006 à 17:43:16  profilanswer
 

LIMIT c'est + simple  :D


Message édité par rosco le 10-08-2006 à 17:43:34
n°1423921
anthomicro
Posté le 10-08-2006 à 17:44:39  profilanswer
 

Mais largement plus lent ;)

n°1423922
Cyrius-c
Posté le 10-08-2006 à 17:44:52  profilanswer
 

anthomicro a écrit :

Le coup de l'update quand tu crées un topic ouais c'est le point noir, pour les sticky tu les fous en -1 et hop... t'es plus emmerdé (c'est ce que je fais)
 
Le problème est que tu peux plus dire à tes utilisateurs de choisir un nombre de topics par page, t'es bridé. Sinon ça serait pas con du tout de stocker des numéros de page, ça serait instantanné, mais en cas de suppression bonjour les emmerdes pour tout recalculer...


J'ai déjà fait le choix de mettre un nombre de tpoic fixe. Ca pose pleins d'emmerdes sinon et 90% des utilisateurs savent meme pas que ca existe  ;)  
 
La suppression c'est comme la reponse. Une suppression en page 20 engendre 2x20 update  :)

n°1423926
Cyrius-c
Posté le 10-08-2006 à 17:47:07  profilanswer
 

Bah un limit , actuellement ca me prend une dizaine de secondes sur 3 millions de topics.  
Un update ca m'en prends meme pas 0.001 :d
 
Et y'a plus de lectures que de nouveau sujet.
De meme qu'il y a plus de reponses dans la première page que dans les autres. L'avantage de ma solution cest que repondre en page 1 ca fait rien du tout

n°1423927
rosco
Posté le 10-08-2006 à 17:47:19  profilanswer
 

Bof pas tant que ça, t'as pas 50000 topics par cat en général et le LIMIT reste à LIMIT 0, X avec X=nbre de topics/pages car la 1ère page est la + regardée de très loin.

n°1423932
chaced
Posté le 10-08-2006 à 17:49:42  profilanswer
 

Cyrius-c a écrit :

Bah un limit , actuellement ca me prend une dizaine de secondes sur 3 millions de topics.  
Un update ca m'en prends meme pas 0.001 :d
 
Et y'a plus de lectures que de nouveau sujet.
De meme qu'il y a plus de reponses dans la première page que dans les autres. L'avantage de ma solution cest que repondre en page 1 ca fait rien du tout


 
c'esr sur si on fait un limit sur 3millions de post, meme en fesant le select que sur un champ de 8octet, ça fait tout desuite enorme :D


---------------
CPU-Z | Timespy | Mes bd | Mon blog
n°1423955
Cyrius-c
Posté le 10-08-2006 à 18:34:11  profilanswer
 

Euh attendez :d ce que je vous raconte ca veut dire que on update 300 000 messages pour une categorie de 3 millions de messages quand on fait un nouveau sujet.
C'est normal que chez moi ca prend 20 secondes pour updater 300 000 messages?

n°1423961
anthomicro
Posté le 10-08-2006 à 18:42:26  profilanswer
 

heu, ça fait beaucoup 20 secondes XD

n°1423967
Cyrius-c
Posté le 10-08-2006 à 18:55:45  profilanswer
 

C'est bien ce qui me semblait!
Qu'est-ce que j'ai fichu :d


Message édité par Cyrius-c le 10-08-2006 à 18:57:21
n°1424288
Max Evans
Posté le 11-08-2006 à 12:46:11  profilanswer
 

Cyrius-c a écrit :

Euh attendez :d ce que je vous raconte ca veut dire que on update 300 000 messages pour une categorie de 3 millions de messages quand on fait un nouveau sujet.
C'est normal que chez moi ca prend 20 secondes pour updater 300 000 messages?


Ca me donnait la même chose il me semble :o


Message édité par Max Evans le 11-08-2006 à 12:46:17

---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
n°1424296
drasche
Posté le 11-08-2006 à 12:57:19  profilanswer
 

Faut pas oublier que non seulement vous modifiez la table mais aussi les indexes :o
 
Perso je trouve pas ça viable (ce genre de discu a déjà eu lieu il y a 100 ou 200 pages). Vous faites comment en cas de mass-ban-delete du dernier boulet arrivé sur votre forum et qui n'aura pas manqué de créer des topics-à-la-con un peu partout?


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°1424390
Cyrius-c
Posté le 11-08-2006 à 14:33:03  profilanswer
 

EN mettant en place cette solution je me rends compte que meme s'il faut faire peu d'update, la solution est lourde.
 
Vous gardez le limit vous?

n°1424396
soulmanto
Chat Noir replica
Posté le 11-08-2006 à 14:41:38  profilanswer
 

Pas de limit pour moi. Je vais vérifier les temps ce soir, mais sur ma base de test avec 1.500.000 messages, l'update résultant d'un nouveau topic est super rapide...

n°1424399
Cyrius-c
Posté le 11-08-2006 à 14:45:00  profilanswer
 

TU update 1.500.000 topic ou une aprtie des 1.500.000?


Message édité par Cyrius-c le 11-08-2006 à 14:45:22
n°1424404
soulmanto
Chat Noir replica
Posté le 11-08-2006 à 14:46:53  profilanswer
 

Juste une partie...

n°1424406
rosco
Posté le 11-08-2006 à 14:48:45  profilanswer
 

Bah moi pour l'instant je vais garder mes LIMIT façon optimisée car on vient de changer de serveur pour passer d'un vieux Cobalt je sais pas quoi (P3 1Ghz un truc du genre) à un BI-Xeon 2.8Ghz avec 2Go de ram et du raid, bah la différence est monstrueuse, ça bombarbe bien :love:
Là où l'ancien mettait au mieux ~0.4-0.8 s pour traiter les requêtes SQL à aller en page 700 (on splittait), le nouveau met seulement ~0.007 sec à tout faire, presque 100x plus rapide :love: :love:
Y a même plus besoin d'optimiser tellement ça va vite :D , nan je blague on optimise quand même car c'est pas une raison et j'ai encore bien des choses à modder et ensuite passer au BETWEEN :o

Message cité 1 fois
Message édité par rosco le 11-08-2006 à 14:49:49
n°1424407
Cyrius-c
Posté le 11-08-2006 à 14:49:09  profilanswer
 

Ah ok. PArce-que je testais a updater 3 millions de messages :d.
C'etait peut etre un peu trop :d
 
Joce, pourrais-tu nous dire combien de SUJETS il y a dans la plus grosse cat de hfr?

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  420  421  422  ..  486  487  488  489  490  491

Aller à :
Ajouter une réponse
 

Sujets relatifs
question avec les forums phpbb2[php] trouver la premier place ou inserer un enregistrement (résolu)
Forums phpBBQui connait l'algo du Passticket et sa mise en place en VB ?
[Merise] Mise en place d'un MCDFocus mal placé....
[Blabla/Prog] Les développeurs foromeurs sont-ils des feignasses?Mise en place d'un formulaire CGI
forums création de site internetJava - Mise en place d'une api (Servlet)
Plus de sujets relatifs à : les développeurs de forums, les 3/4 des forums sont down /o\


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)