Une note a été ajoutée pour ce bug.
http://www.spip.net/bugs/view_bug_page.php?f_id=0000142
Rapporteur: filou
Responsable:
Projet: SPIP
Bug ID: 0000142
Catégorie: autres
Reproductibilité: quelques fois
Sévérité: majeur
Priorité: normale
Etat: nouveau
Date de soumission: 23/09/03 12:23 CEST
Dernière modification: 23/09/03 16:43 CEST
Résumé: Epargner la base quand on fait OPTIMIZE TABLE
Description:
Quand SPIP lance l'OPTIMIZE TABLE, le calcul, sur un serveur chargé, peut
prendre jusqu'à 5 minutes, et totu se bloque, MySQL se met à ramer, etc.
Deux pistes :
1) ne déclencher cette optimization que la nuit (??)
2) interdire les connexions pendant l'optimize.
autre suggestion ?
-----------------------------------------------------------------------
filou - 23/09/03 14:47 CEST
-----------------------------------------------------------------------
Florent nous disait, via la mailing-liste :
« sur des serveurs chargés, ce genre d'opération est plutôt réservé aux
administrateurs de la base de donnée. Peut-être faut-il ajouter une
option dans le configuration de SPIP permettant d'externaliser cette
opération ? (par défaut, ça reste comme ça, et lorque c'est externalisé,
c'est à l'admin de le gérer) »
Florent
-----------------------------------------------------------------------
filou - 23/09/03 14:57 CEST
-----------------------------------------------------------------------
Aïe ! Apparemment la base peut aussi se bloquer plus ou moins longtemps
quand on fait la mise à jour des popularités avec les requêtes :
UPDATE spip_articles SET popularite = GREATEST( 1, popularite ) +
0.69314718055995 * 3 WHERE id_article.....
-----------------------------------------------------------------------
JLuc - 23/09/03 16:43 CEST
-----------------------------------------------------------------------
Pistes ?
Estimer la charge instantannée du systeme avant de lancer des requetes
lourdes. Par ex, pour estimer la charge du système, chronométrer
l'exécution d'une requete-étalon. Si c'est trop long (par rapport à un
temps ou un critère plus complexe à définir ...) arrêter là.
Ou sinon sans surprise : fractionner les requêtes...