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

 


 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  424  425  426  ..  486  487  488  489  490  491
Auteur Sujet :

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

n°1428209
rosco
Posté le 20-08-2006 à 21:22:16  profilanswer
 

Reprise du message précédent :
Atta que je sois sûr de bien comprendre :D. Pour toi la nouveauté c'est de ne prendre et de ne trier que les ID d'abord puis d'injecter les X ID trouvés dans la 2ème requête pour ramener les data des replys, c'est ça ? Si oui, c'est ce qu'on fait depuis un bon moment pour alléger le ORDER+LIMIT bourrin en 1 requête (la méthode archiclassique quoi).
 
C'est pour ça que je te demande le résultat du test en allant chercher que tes ID dans la grosse table existante puis de les injecter dans la seconde requête IN() de la même manière. Car les mêmes infos se trouvent en 2 tables différentes, ça n'a pas de sens de faire une copie pour ça (la grosse utilisera les index aussi si c'est bien fait). Tu pourrais donc très bien aller piocher directement dans la grosse table que les ID d'abord, puis ensuite les data associées à ces ID. En espérant avoir compris ton truc. :)


Message édité par rosco le 20-08-2006 à 21:23:54
mood
Publicité
Posté le 20-08-2006 à 21:22:16  profilanswer
 

n°1428212
Max Evans
Posté le 20-08-2006 à 21:26:09  profilanswer
 

'tain mais ouais t'a raison [:mlc]
 
Autant aller chercher uniquement les ID ds la seule et unique table, ça revient au même :o
 
J'avais pas vu passer ce tips [:sisicaivrai]
 
Quand je dis que je réinvente la roue :o


---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
n°1428213
rosco
Posté le 20-08-2006 à 21:28:36  profilanswer
 

Bah regarde là alors, j'avais développé la méthode que j'emploies (et qui va dégager car je remodifie encore) et que tu sembles reprendre : http://forum.hardware.fr/hardwaref [...] m#t1407057
 
Et oui les gains sont bien là, heureusement  ;)


Message édité par rosco le 20-08-2006 à 21:33:37
n°1428242
joce
Architecte / Développeur principal
"BugHunter"
Posté le 20-08-2006 à 22:21:00  profilanswer
 

et c'est moi qui avait proposé la méthode, alors n'allait pas dire que je ne partage pas certaines infos :o

n°1428256
Limit
Posté le 20-08-2006 à 22:47:49  profilanswer
 

mais ca reste pas performant sur les gros topics :p

n°1428257
KangOl
Profil : pointeur
Posté le 20-08-2006 à 22:50:58  profilanswer
 

corrigez moi si je me trompe, mais c'est le in qui ralenti beaucoup.
le in est assez lent (nettement que le limit mais tout de meme), il faut privilégier le between ou encore le exists dans les cas où c'est possible

n°1428262
rosco
Posté le 20-08-2006 à 23:02:17  profilanswer
 

joce a écrit :

et c'est moi qui avait proposé la méthode, alors n'allait pas dire que je ne partage pas certaines infos :o


Euh tu savais que les IPB 2.x utilisent cette méthode depuis un moment ? :D
En relisant un de leur bout de code, je me suis aperçu de ça hier !  
Le code est tellement découplé que c'est très chiant à suivre et je l'ai pas vu de suite l'autre fois :D

n°1428265
soulmanto
Chat Noir replica
Posté le 20-08-2006 à 23:03:06  profilanswer
 

le exists pour accélérer les choses?!? :eek:

n°1428272
scull
MySCULL cay bon mangez en!
Posté le 20-08-2006 à 23:13:04  profilanswer
 

EDIT: grosse connerie  [:amandine75011]


Message édité par scull le 20-08-2006 à 23:13:43
n°1428276
Multinickn​ame
Ah bon...
Posté le 20-08-2006 à 23:18:24  profilanswer
 

Joce, tu utilises pour les posts une table tous les 15000 posts non?


---------------
Feaks Forum
mood
Publicité
Posté le 20-08-2006 à 23:18:24  profilanswer
 

n°1428281
rosco
Posté le 20-08-2006 à 23:21:24  profilanswer
 

A la bourrin : 34593831/15000 = 2307 tables :whistle:  
C'est jouable à ton avis? :D

Message cité 1 fois
Message édité par rosco le 20-08-2006 à 23:21:45
n°1428291
joce
Architecte / Développeur principal
"BugHunter"
Posté le 20-08-2006 à 23:31:55  profilanswer
 

Multinickname a écrit :

Joce, tu utilises pour les posts une table tous les 15000 posts non?


non :lol:

n°1428292
joce
Architecte / Développeur principal
"BugHunter"
Posté le 20-08-2006 à 23:32:30  profilanswer
 

rosco a écrit :

Euh tu savais que les IPB 2.x utilisent cette méthode depuis un moment ? :D
En relisant un de leur bout de code, je me suis aperçu de ça hier !  
Le code est tellement découplé que c'est très chiant à suivre et je l'ai pas vu de suite l'autre fois :D


ah non je savais pas :D

n°1428298
rosco
Posté le 20-08-2006 à 23:38:14  profilanswer
 

C'est bien, ils tentent qques petite optis, même si tout ce qu'ils rajoutent à côté annihile une bonne partie du travail :D


Message édité par rosco le 20-08-2006 à 23:38:42
n°1428315
Multinickn​ame
Ah bon...
Posté le 21-08-2006 à 00:10:32  profilanswer
 

rosco a écrit :

A la bourrin : 34593831/15000 = 2307 tables :whistle:  
C'est jouable à ton avis? :D


 


 
 
Ben non c'est pas jouable mais ça m'intrigue j'ai fait un petit script pour un forum tiers pour updater des posts, et il y avais 25 tables de posts [:pingouino] Ca s'explique comment?
 


---------------
Feaks Forum
n°1428322
rosco
Posté le 21-08-2006 à 00:21:56  profilanswer
 

C'est quel forum ? 1 table par catégorie ou sous-catégorie tu veux dire plutôt, non ? Comme Joce fait ici, y a plusieurs tables de posts, une pour chaque grande cat normalement (corrigez moi si c'est incomplet).  
 
Une partie des perfs vient de la multiplication de ces tables quand la charge de visiteurs augmente méchamment (accès concurrents). Ca fait moins d'accès et de verrouillages sur chaque "petite" table pour les lectures/écritures que s'il n'y en avait qu'une énorme qui contiendrait tous les replys et que les requêtes de tout les forumers venaient bourriner cette unique table... C'est un peu plus chiant à gérer par contre mais en cas de pépin tu travailles sur des tables de taille raisonnable, pas un monstre de 30000000 de lignes d'un bloc.


Message édité par rosco le 21-08-2006 à 00:32:53
n°1428331
Multinickn​ame
Ah bon...
Posté le 21-08-2006 à 01:05:11  profilanswer
 

C'est Altab.
 
Ben je sais pas les tables s'appelaient threadaltab0 threadaltab1...threadaltab25
Et à l'intérieur je crois que c'étaient des posts, je me trompe peut être, je n'ai pas vu la db.
Pour les cats, en effet je savais qu'à un certain seuil chaque cat. avait sa table ;) C'est sûr que c'est une bonne technique pour de gros forums .


---------------
Feaks Forum
n°1428333
rosco
Posté le 21-08-2006 à 01:19:35  profilanswer
 

Bah Altab est un forum MD, donc c'est normal que les tables soient fractionnées :D , Joce fractionne donc peut être en sous-cat vu le nombre ?? Tu peux avoir accès à la DB pour sa structure [:ddr555] ?
 
PS : Altab est fermé :??:  Ca dit ça : "Suite aux diverses photos porno postées, aux propos complètement déplacés et à la réaction des admins à nos avertissements, ce forum est fermé." ou alors c'est à une autre URL maintenant  :o

Message cité 1 fois
Message édité par rosco le 21-08-2006 à 01:26:40
n°1428379
chaced
Posté le 21-08-2006 à 09:26:38  profilanswer
 

Max Evans a écrit :

'tain mais j'avais pas vu que Cyrius-c avait déjà cette technique :D
 
J'ai fais quelques tests (J'en ferai d'autres) :
SELECT * FROM TestMessage WHERE idtopic=1234 ORDER BY id ASC LIMIT 9000,30
 
Résultat > 0.790s pour récupérer les 30 enregistrements ...
 
 
-----------------
 
SELECT * FROM TestMessageHeap WHERE IdTopic = 1234 ORDER BY IdMessage DESC LIMIT 9000,30
 
+ implode
 
+ SELECT * FROM TestMessage WHERE id IN ($les_id)
 
J'ai pas la bonne version de MySQL pour faire les sous-requêtes, bref :o
 
Résultat > 0.04s ...
 
 
Le tout sur une table de test de 200 000 enregistrements :love:
 
PS : La table TestMessageHeap n'est pas en format HEAP, ca faisait peur à certain :o Elle contient uniquement IdMessage et IdTopic.
 
J'ai réinventé la roue [:huit]


 
Je ne comprend pas pourquoi tu ne fais pas un select id sur ta table TestMessage puis tu refais avec un select * in les id que tu as réccupérés...


---------------
CPU-Z | Timespy | Mes bd | Mon blog
n°1428383
joce
Architecte / Développeur principal
"BugHunter"
Posté le 21-08-2006 à 09:29:36  profilanswer
 

ultra grillaid :o

n°1428547
Multinickn​ame
Ah bon...
Posté le 21-08-2006 à 13:13:51  profilanswer
 

rosco a écrit :

Bah Altab est un forum MD, donc c'est normal que les tables soient fractionnées :D , Joce fractionne donc peut être en sous-cat vu le nombre ?? Tu peux avoir accès à la DB pour sa structure [:ddr555] ?
 
PS : Altab est fermé :??:  Ca dit ça : "Suite aux diverses photos porno postées, aux propos complètement déplacés et à la réaction des admins à nos avertissements, ce forum est fermé." ou alors c'est à une autre URL maintenant  :o


 
Oui Altab est à une nouvelle adresse avec une nouvelle licence. ;)
 

joce a écrit :

ultra grillaid :o


 
Ben euh alors ça s'explique comment tes 26 tables? :o

Message cité 1 fois
Message édité par Multinickname le 21-08-2006 à 13:14:05

---------------
Feaks Forum
n°1428630
zapan666
Tout est relatif
Posté le 21-08-2006 à 15:16:24  profilanswer
 

Une requete du type

Code :
  1. select max(id) from matable


 
ça utilise les index ou pas ? (explain n'a pas l'air de me le dire)
 
ça serait pour virer mes limits dans mes requetes petit à petit [:petrus75]


Message édité par zapan666 le 21-08-2006 à 15:16:47

---------------
my flick r - Just Tab it !
n°1428644
joce
Architecte / Développeur principal
"BugHunter"
Posté le 21-08-2006 à 15:46:10  profilanswer
 

EXPLAIN devrait te le dire. (genre optimised away)
ca utilise pas les indexs parce que l'infos est directement stockee dans le .frm de la table je crois (pour du MyISAM tout du moins)

n°1428653
zapan666
Tout est relatif
Posté le 21-08-2006 à 15:57:37  profilanswer
 

joce a écrit :

EXPLAIN devrait te le dire. (genre optimised away)


C'était donc ce que voulais me dire mySQL[:petrus75]

Code :
  1. 1   SIMPLE   NULL   NULL   NULL   NULL   NULL   NULL   NULL   Select tables optimized away


Citation :


ca utilise pas les indexs parce que l'infos est directement stockee dans le .frm de la table je crois (pour du MyISAM tout du moins)


ah, ok  [:dawa]  
 
Merci  [:mad_overclocker]  


---------------
my flick r - Just Tab it !
n°1428655
Limit
Posté le 21-08-2006 à 16:00:39  profilanswer
 

joce a écrit :

EXPLAIN devrait te le dire. (genre optimised away)
ca utilise pas les indexs parce que l'infos est directement stockee dans le .frm de la table je crois (pour du MyISAM tout du moins)


quel info?
Je viens de faire un ls -l et les .frm n'ont pas l'air d'avoir été touché depuis la création de la table.

n°1428662
drasche
Posté le 21-08-2006 à 16:10:06  profilanswer
 

Le nombre d'enregistrement pour une table MyISAM est effectivement lu à un endroit précis et non en comptant les enregistrements, c'était expliqué quelque part dans la doc MySQL.


---------------
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°1428681
Limit
Posté le 21-08-2006 à 16:23:45  profilanswer
 

enfin max(id) c'est différent du nombre d'enregistrements si tu en as supprimé. là ce dont tu parles c'est des count(*) mais bon c'est pe le meme principe avec le max()

n°1428746
drasche
Posté le 21-08-2006 à 17:30:31  profilanswer
 

Et merde, j'avais mal lu la question [:petrus75]
 
Bon ben pour le coup, je ne sais pas.


---------------
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°1428796
Max Evans
Posté le 21-08-2006 à 18:00:01  profilanswer
 

mysq_fetch_array ? :??:
 
EDIT : J'ai rien dis, il y est :D


Message édité par Max Evans le 21-08-2006 à 18:00:27

---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
n°1428800
Max Evans
Posté le 21-08-2006 à 18:00:59  profilanswer
 

$stfu['nbPosts']; et pas $stfu[0]; non ? :??:
 
EDIT : J'ai encore rien dis :o C'est tout dégueu, y a des echo de trucs qui existent pas, toussa toussa :o


Message édité par Max Evans le 21-08-2006 à 18:01:49

---------------
Envie d'un bol d'air ? Traxxas Revo 3.3
n°1428803
rosco
Posté le 21-08-2006 à 18:01:50  profilanswer
 

Le COUNT(*) est un compte général de tous les enregistrements de la table, peu importe l'id.  
Il faut mettre COUNT(id) ici pour ne compter que le nombre de posts ayant l'ID défini dans ta condition WHERE.

Message cité 1 fois
Message édité par rosco le 21-08-2006 à 18:02:23
n°1428808
rosco
Posté le 21-08-2006 à 18:06:00  profilanswer
 

Y nous faudrait l'erreur que ça affiche pour être sûr et j'avais retrouvé l'url hier après le post de Multinickname, mais y faut s'inscrire pour voir qquechose, ça doit pas être joli joli ce qu'il y a derrière vu le passé de Altab :D


Message édité par rosco le 21-08-2006 à 18:07:28
n°1428829
rosco
Posté le 21-08-2006 à 18:21:36  profilanswer
 

Nan le truc Resource #x c'est l'erreur (ça s'indexera si y a plusieurs bugs), c'est un truc de lecture ou je sais plus quoi, j'ai déjà où ce genre d'erreur car il ne pouvait pas lire un bout d'array je crois. T'as viré tes echo pour essayer ?


Message édité par rosco le 21-08-2006 à 18:22:05
n°1428840
rosco
Posté le 21-08-2006 à 18:26:06  profilanswer
 

wé tu mets // devant


Message édité par rosco le 21-08-2006 à 18:27:44
n°1428842
Limit
Posté le 21-08-2006 à 18:28:07  profilanswer
 

c'est pour quoi faire ca?
 
echo $tg;        
echo $stfu[0];

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  424  425  426  ..  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)